迷惑なUbuntuにMySQLをインストールする際に問題があります。
これはMySQLの一部です
---
- name: Install MySQL
apt:
name: "{{ item }}"
with_items:
- python-mysqldb
- mysql-server
- name: copy .my.cnf file with root password credentials
template:
src: templates/root/.my.cnf
dest: ~/.my.cnf
owner: root
mode: 0600
- name: Start the MySQL service
service:
name: mysql
state: started
enabled: true
# 'localhost' needs to be the last item for idempotency, see
# http://ansible.cc/docs/modules.html#mysql-user
- name: update mysql root password for all root accounts
mysql_user:
name: root
Host: "{{ item }}"
password: "{{ mysql_root_password }}"
priv: "*.*:ALL,GRANT"
with_items:
- "{{ ansible_hostname }}"
- 127.0.0.1
- ::1
- localhost
そして、私はこのエラーがあります
failed: [default] => (item=vagrant-ubuntu-trusty-64) => {"failed": true, "item": "vagrant-ubuntu-trusty-64"}
msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials
failed: [default] => (item=127.0.0.1) => {"failed": true, "item": "127.0.0.1"}
msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials
failed: [default] => (item=::1) => {"failed": true, "item": "::1"}
msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials
failed: [default] => (item=localhost) => {"failed": true, "item": "localhost"}
msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials
私の.my.cnfは
[client]
user=root
password={{ mysql_root_password }}
そして、サーバーにコピーされたとき
[client]
user=root
password=root
〜/ .my.cnfが作成される理由がわかりません
プロジェクト Github
ありがとう
mysql-server
がヘッドレスでインストールされている場合、パスワードはありません。したがって、.my.cnf
を機能させるには、空のパスワード行が必要です。 .my.cnf
でテストしたものは次のとおりです。
[client]
user=root
password=
.my.cnf
をvagrant
ユーザーディレクトリに、rootが所有し、rootとしてのみ読み取り可能な状態で置くことも少し奇妙です。
.my.cnf
でパスワードが空白であることを確認した後、これら4つのコンテキストでルートのパスワードを適切に設定できました。 .my.cnf
を更新する必要があるため、その後実行に失敗し、Note等性テストに失敗することに注意してください。
Ansible mysql_userモジュールページには、パスワードの書き込みとthen.my.cnf
ファイルの書き込みを提案するメモがあります。それを行う場合、mysql_user
アクションに対するwhere
句が必要です(おそらくその前にfile statを使用)。
さらにエレガントなのは、check_implicit_admin
とlogin_user
およびlogin_password
を一緒に使用することです。それは美しくべき等です。
3番目の方法として、おそらくcheck_implicit_admin
でさらに簡単になります。
いくつかの新しいサーバーでテストされた、上記を示す私の成功したプレイブックは次のとおりです。これを誇りに思います。注.my.cnf
はこれらすべてに不要です。
---
- hosts: mysql
vars:
mysql_root_password: fart
tasks:
- name: Install MySQL
apt: name={{ item }} update_cache=yes cache_valid_time=3600 state=present
Sudo: yes
with_items:
- python-mysqldb
- mysql-server
#- name: copy cnf
# copy: src=.my.cnf dest=~/.my.cnf owner=ubuntu mode=0644
# Sudo: yes
- name: Start the MySQL service
Sudo: yes
service:
name: mysql
state: started
enabled: true
- name: update mysql root password for all root accounts
Sudo: yes
mysql_user:
name: root
Host: "{{ item }}"
password: "{{ mysql_root_password }}"
login_user: root
login_password: "{{ mysql_root_password }}"
check_implicit_admin: yes
priv: "*.*:ALL,GRANT"
with_items:
- "{{ ansible_hostname }}"
- 127.0.0.1
- ::1
- localhost
(編集-my.cnfを削除)
これが私の役目を果たすMySQLの完全な役割です。
vars/main.yml:
mysql_root_pass: mypassword #MySQL Root Password
asks/main.yml:
---
- name: Install the MySQL packages
apt: name={{ item }} state=installed update_cache=yes
with_items:
- mysql-server-5.6
- mysql-client-5.6
- python-mysqldb
- libmysqlclient-dev
- name: Update MySQL root password for all root accounts
mysql_user: name=root Host={{ item }} password={{ mysql_root_pass }} state=present
with_items:
- "{{ ansible_hostname }}"
- 127.0.0.1
- ::1
- localhost
- name: Copy the root credentials as .my.cnf file
template: src=root.cnf.j2 dest=~/.my.cnf mode=0600
- name: Ensure Anonymous user(s) are not in the database
mysql_user: name='' Host={{ item }} state=absent
with_items:
- localhost
- "{{ ansible_hostname }}"
- name: Remove the test database
mysql_db: name=test state=absent
notify:
- Restart MySQL
templates/root.cnf.j2
[client]
user=root
password={{ mysql_root_pass }}
handlers/main.yml
---
- name: Restart MySQL
service: name=mysql state=restarted
site.yml
---
- hosts: all
become: yes
gather_facts: yes
roles:
- mysql
ヘルプが必要な場合は、このgithub link を確認してください。ありがとう