Mysql
 sql >> Base de données >  >> RDS >> Mysql

Manuel d'installation d'Ansible idempotent MySQL

J'ai posté à ce sujet sur coderwall , mais je vais reproduire l'amélioration de dennisjac dans les commentaires de mon message d'origine.

L'astuce pour le faire de manière idempotente est de savoir que le module mysql_user chargera un fichier ~/.my.cnf s'il en trouve un.

Je change d'abord le mot de passe, puis copie un fichier .my.cnf avec les informations d'identification du mot de passe. Lorsque vous essayez de l'exécuter une deuxième fois, le module ansible myqsl_user trouvera le .my.cnf et utilisera le nouveau mot de passe.

- 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

Le modèle .my.cnf ressemble à ceci :

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

Modifier :ajout de privilèges comme recommandé par Dhananjay Nene dans les commentaires, et modification de l'interpolation des variables pour utiliser des accolades au lieu du signe dollar .