register と failed_when
苦労していた、Ansible によるMySQL のユーザー情報CRUD 周りの冪等性ですが、とりあえずは、どうにか解決できそうです。
shell の実行結果に応じてregister の値を格納してやり、その結果をwhen で確認して、処理を振り分ける形。
- name: Check if root pass is blank
shell: mysql -uroot -e "exit"
register: blank_root_password
failed_when: false
changed_when: false
- debug: msg="{{ blank_root_password }}"
- name: Change root password
mysql_user:
host: localhost
login_user: root
login_password: ''
name: root
password: hoge
when: blank_root_password.stderr == ""
正直、ちょっと苦しいというか、シンプルとは言い難い書き方なので、もっと勉強が必要そうですけれどね。
まあ、ここで長々と引っ掛かっていると、それはそれで時間のロスなので。
まずは歩を進めます。
長かった。orz