मैंने इसके बारे में coderwall पर पोस्ट किया है , लेकिन मैं अपनी मूल पोस्ट की टिप्पणियों में डेनिसजैक के सुधार को पुन:पेश करूंगा।
इसे बेकार ढंग से करने की चाल यह जान रही है कि mysql_user मॉड्यूल एक ~/.my.cnf फ़ाइल को लोड करेगा यदि यह एक पाता है।
मैं पहले पासवर्ड बदलता हूं, फिर पासवर्ड क्रेडेंशियल के साथ एक .my.cnf फ़ाइल कॉपी करता हूं। जब आप इसे दूसरी बार चलाने का प्रयास करते हैं, तो myqsl_user ansible मॉड्यूल .my.cnf ढूंढेगा और नए पासवर्ड का उपयोग करेगा।
- hosts: staging_mysql
user: ec2-user
sudo: yes
tasks:
- name: Install MySQL
action: yum name={{ item }}
with_items:
- MySQL-python
- mysql
- mysql-server
- name: Start the MySQL service
action: service name=mysqld state=started
# '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
- name: copy .my.cnf file with root password credentials
template: src=templates/root/.my.cnf dest=/root/.my.cnf owner=root mode=0600
.my.cnf टेम्प्लेट इस तरह दिखता है:
[client]
user=root
password={{ mysql_root_password }}
संपादित करें:टिप्पणियों में धनंजय नेने द्वारा सुझाए गए विशेषाधिकार जोड़े गए, और डॉलर चिह्न के बजाय ब्रेसिज़ का उपयोग करने के लिए परिवर्तनीय इंटरपोलेशन को बदल दिया ।