Tôi đã đăng về điều này trên coderwall , nhưng tôi sẽ tái tạo sự cải thiện của dennisjac trong các nhận xét của bài đăng gốc của tôi.
Mẹo để làm điều đó một cách lý tưởng là biết rằng mô-đun mysql_user sẽ tải một tệp ~ / .my.cnf nếu nó tìm thấy một tệp.
Trước tiên, tôi thay đổi mật khẩu, sau đó sao chép tệp .my.cnf với thông tin đăng nhập mật khẩu. Khi bạn cố gắng chạy nó lần thứ hai, mô-đun myqsl_user ansible sẽ tìm thấy .my.cnf và sử dụng mật khẩu mới.
- 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
Mẫu .my.cnf trông giống như sau:
[client]
user=root
password={{ mysql_root_password }}
Chỉnh sửa:Đã thêm các đặc quyền theo đề xuất của Dhananjay Nene trong các nhận xét và thay đổi phép nội suy biến để sử dụng dấu ngoặc nhọn thay vì ký hiệu đô la .