sql >> Databáze >  >> RDS >> Mysql

Možnost idempotentní instalační příručka MySQL

Zveřejnil jsem o tom na coderwall , ale dennisjacovo vylepšení zopakuji v komentářích k mému původnímu příspěvku.

Trik, jak to udělat idempotentně, je vědět, že modul mysql_user načte soubor ~/.my.cnf, pokud nějaký najde.

Nejprve změním heslo a poté zkopíruji soubor .my.cnf s přihlašovacími údaji pro heslo. Když se jej pokusíte spustit podruhé, modul myqsl_user ansible najde .my.cnf a použije nové heslo.

- 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

Šablona .my.cnf vypadá takto:

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

Upravit:Přidána oprávnění, jak doporučuje Dhananjay Nene v komentářích, a změněna interpolace proměnné tak, aby místo znaku dolaru používala složené závorky .



  1. Získejte rozdíl v letech mezi dvěma daty v MySQL jako celé číslo

  2. Eliminace PostgreSQL Split-Brain ve vícecloudových databázích

  3. Jak vložím více záznamů do jednoho databázového výletu pomocí PDO?

  4. LEFT JOIN příkaz a limit