Issue #60: Restore idempotence.

This commit is contained in:
Jeff Geerling 2015-10-01 22:35:39 -05:00
parent f542bcfe73
commit 074b9de092
3 changed files with 7 additions and 10 deletions

View file

@ -3,6 +3,9 @@ mysql_user_home: /root
mysql_root_username: root
mysql_root_password: root
# Set this to true to forcibly update the root password.
mysql_root_password_update: false
mysql_enabled_on_startup: yes
# update my.cnf. each time role is run? yes | no

View file

@ -24,3 +24,4 @@
- name: Ensure MySQL is started and enabled on boot.
service: "name={{ mysql_daemon }} state=started enabled={{ mysql_enabled_on_startup }}"
register: mysql_service_configuration

View file

@ -4,21 +4,14 @@
register: mysql_root_hosts
changed_when: false
# TODO: This is currently not idempotent.
# Note: We do not use mysql_user for this operation, as it doesn't always update
# the root password correctly. See: https://goo.gl/MSOejW
- name: Update MySQL root password for localhost root account.
shell: >
mysql -u root -NBe
'SET PASSWORD FOR "{{ mysql_root_username }}"@"{{ item }}" = PASSWORD("{{ mysql_root_password }}");'
with_items: mysql_root_hosts.stdout_lines
# The below task doesn't work in some instances for some users, at least with
# certain versions of Ansible.
# - name: Update MySQL root password for localhost root account.
# mysql_user:
# name: "{{ mysql_root_username }}"
# host: "{{ item }}"
# password: "{{ mysql_root_password }}"
# with_items: mysql_root_hosts.stdout_lines
when: mysql_service_configuration.changed or mysql_root_password_update
# Has to be after the root password assignment, for idempotency.
- name: Copy .my.cnf file with root password credentials.