mysql-server
の場合 ヘッドレスでインストールされ、パスワードはありません。したがって、.my.cnf
を作成します 動作します。空白のパスワード行が必要です。これが私が.my.cnf
のためにテストしたものです :
[client]
user=root
password=
.my.cnf
を置くのも少し奇妙です vagrant
で rootが所有し、rootとしてのみ読み取り可能なユーザーディレクトリ。
.my.cnf
でパスワードが空白であることを確認した後 、これら4つのコンテキストでrootのパスワードを適切に設定できました。 .my.cnf
なので、その後は実行できないことに注意してください。 更新する必要があるため、べき等テストに失敗します。
ansible mysql_userモジュールページに、パスワードを書き込んでから次にを提案するメモがあります。 .my.cnf
を書く ファイル。その場合は、where
が必要です mysql_user
の句 アクション(おそらくその前のファイル統計を使用)。
さらにエレガントなのは、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を削除)