sql >> Database >  >> RDS >> Mysql

Ansible idempotent MySQL installatie Playbook

Ik heb hierover gepost op coderwall , maar ik zal de verbetering van dennisjac weergeven in de opmerkingen van mijn oorspronkelijke bericht.

De truc om het idempotent te doen, is weten dat de mysql_user-module een ~/.my.cnf-bestand zal laden als het er een vindt.

Ik wijzig eerst het wachtwoord en kopieer vervolgens een .my.cnf-bestand met de wachtwoordgegevens. Wanneer u het een tweede keer probeert uit te voeren, zal de myqsl_user ansible-module de .my.cnf vinden en het nieuwe wachtwoord gebruiken.

- 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

Het .my.cnf-sjabloon ziet er als volgt uit:

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

Bewerken:privileges toegevoegd zoals aanbevolen door Dhananjay Nene in de opmerkingen, en variabele interpolatie gewijzigd om accolades te gebruiken in plaats van dollarteken .



  1. Is java.sql.Timestamp tijdzone specifiek?

  2. SQLite JSON_EACH()

  3. Wat is MariaDB TX? Hoe de nieuwe MariaDB MySQL-vork te beheren!

  4. SQL Server Bulk Insert – Deel 1