Mysql
 sql >> Database >  >> RDS >> Mysql

Installa MySQL con ansible su Ubuntu

Quando mysql-server è installato senza testa, non c'è password. Quindi fare .my.cnf lavoro, dovrebbe avere una riga della password vuota. Ecco cosa ho testato per un .my.cnf :

[client]
user=root
password=

È anche un po' strano mettere .my.cnf nel tuo vagrant directory utente come di proprietà di root e leggibile solo come root.

Dopo aver verificato che la password fosse vuota in .my.cnf , sono stato in grado di impostare correttamente la password per root in questi quattro contesti. Nota che non viene eseguito dopo, poiché .my.cnf dovrebbe essere aggiornato, quindi non supera il test di idempotenza.

C'è una nota sulla pagina del modulo ansible mysql_user che suggerisce di scrivere la password e quindi scrivendo il .my.cnf file. Se lo fai, hai bisogno di un where clausola al mysql_user azione (probabilmente con un file stat prima).

Ancora più elegante è usare check_implicit_admin insieme a login_user e login_password . È meravigliosamente idempotente.

Come terzo modo, forse check_implicit_admin lo rende ancora più semplice.

Ecco il mio playbook di successo che mostra quanto sopra, testato con alcuni server nuovi. Un po' orgoglioso di questo. Nota .my.cnf non è necessario per tutto questo.

---
- hosts: mysql
  vars:
    mysql_root_password: fart
  tasks:
  - name: Install MySQL
    apt: name={{ item }} update_cache=yes cache_valid_time=3600 state=present
    sudo: yes
    with_items:
    - python-mysqldb
    - mysql-server
  #- name: copy cnf
  #  copy: src=.my.cnf dest=~/.my.cnf owner=ubuntu mode=0644
  #  sudo: yes
  - name: Start the MySQL service
    sudo: yes
    service: 
      name: mysql 
      state: started
      enabled: true
  - name: update mysql root password for all root accounts
    sudo: yes
    mysql_user: 
      name: root 
      host: "{{ item }}" 
      password: "{{ mysql_root_password }}"
      login_user: root
      login_password: "{{ mysql_root_password }}"
      check_implicit_admin: yes
      priv: "*.*:ALL,GRANT"
    with_items:
      - "{{ ansible_hostname }}"
      - 127.0.0.1
      - ::1
      - localhost 

(modifica-rimosso my.cnf)