Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Manual de instalação do MySQL idempotente Ansible


Postei sobre isso em coderwall , mas vou reproduzir a melhora de dennisjac nos comentários do meu post original.

O truque para fazer isso de forma idempotente é saber que o módulo mysql_user carregará um arquivo ~/.my.cnf se encontrar um.

Primeiro, altero a senha e, em seguida, copio um arquivo .my.cnf com as credenciais da senha. Quando você tentar executá-lo uma segunda vez, o módulo ansible myqsl_user encontrará o .my.cnf e usará a nova senha.
- 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

O modelo .my.cnf se parece com isso:
[client]
user=root
password={{ mysql_root_password }}

Editar:Privilégios adicionados conforme recomendado por Dhananjay Nene nos comentários e interpolação de variável alterada para usar chaves em vez de cifrão .