http://docs.ansible.com/ansible/mysql_user_module.html
MySQLdbライブラリのインストール
mysel_userモジュールを使用するためには下記記載のようにPythonのMySQLdbライブラリが必要。
Requirements (on host that executes module)
http://docs.ansible.com/ansible/mysql_user_module.html#requirements-on-host-that-executes-module
- MySQLdb
Amazon Linux環境だったのでYumリポジトリからインストールすることができた。
ただ、バージョンを指定する必要があった。指定がない状態だと2.6用のがインストールされる。
# yum install -y MySQL-python27
プレイブックで書くとこうなる。
- name: yum install MySQL-python require ansible mysql_user module yum: name=MySQL-python27 state=latest
パスワード変更
MySQLはユーザ名とクライアントのホスト名をセットで管理しているので、ユーザ名とホスト名を指定する必要がある。
今回は全てのホストに対して変更をかけたかったのでmysel_userモジュールのhost_allオプションを使用した(v2.1以降で使用可能)
別途mysql_root_passwordという変数の用意が必要。
- name: mysql root change password mysql_user: name=root password='{{mysql_root_password}}' host_all=yes
これでパスワードの変更は完了だが、これだけだと次回以降変更処理をする際にログインできずエラーになってしまう。
ログインするユーザのホームディレクトリに.my.cnfを作成してログイン情報を記載しておくことで解決する。
- name: /root/.my.cnf by template template: src=templates/my.cnf.j2 dest=/root/.my.cnf
テンプレートの中身はこう。
[client] user = root password = {{ mysql_root_password }}