sql >> Databasteknik >  >> RDS >> Mysql

Ansible idempotent MySQL installation Playbook

Jag skrev om detta på coderwall , men jag återger dennisjacs förbättring i kommentarerna till mitt ursprungliga inlägg.

Tricket att göra det idempotent är att veta att mysql_user-modulen kommer att ladda en ~/.my.cnf-fil om den hittar en.

Jag ändrar först lösenordet och kopierar sedan en .my.cnf-fil med lösenordsuppgifterna. När du försöker köra den en andra gång kommer modulen myqsl_user ansible att hitta .my.cnf och använda det nya lösenordet.

- 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-mallen ser ut så här:

[client]
user=root
password={{ mysql_root_password }}

Redigering:Lade till privilegier som rekommenderas av Dhananjay Nene i kommentarerna, och ändrade variabel interpolation för att använda hängslen istället för dollartecken .



  1. MySQL-utvalda poster för 1 timme sedan eller nyare i kolumnen datetime

  2. Hur man kontrollerar MySQL-databasstorlek i Linux

  3. SQL:Sortera efter prioritet, men sätt 0 sist

  4. Det går inte att ansluta till någon av de angivna MySQL-värdarna