Ansible – Comment créer un user et une base mysql ?

Print Friendly, PDF & Email

Cela fait quelques temps que je n’ai pas posté d’article ansible. La chaîne youtube prend pas mal de temps mais j’aime beaucoup le blog. Le mode écrit est tout de même bien sympa.

Mon orchestrateur préféré est une vraie mine d’or pour ce qui est de gérer les petites actions du quotidien et c’est aussi le cas en matière de base de données. De nombreuses actions sont natives sur ansible (moyennant d’avoir installé le module python qui va bien pour pouvoir le faire).

Si vous souhaitez la version vidéo de cette article, la voici :

Sinon pour la version écrite. Commençons par définir quelques variables dans notre rôle mysql.

Commençons par définir quelques variables dans notre répertoire defaults de notre rôle mysql.

mysql_packages:
  - mysql-server
  - python-mysqldb
mysql_db: "wordpress"
mysql_user: "user1"
mysql_password: "password"

On y retrouve la liste des paquets à installer à savoir mysql-server et python-mysqldb. C’est ce dernier qui permet à ansible d’interagir avec le moteur mysql.

Ensuite éditons notre fichier main.yml dans le répertoire tasks.

- name: "[MYSQL] - update cache"
  apt:
    update_cache: yes

- name: "[MYSQL] - install"
  apt:
    name: "{{ mysql_packages }}"
    state: latest

- name: "[MYSQL] - start mysql"
  service:
    name: "mysqld"
    state: started
    enabled: yes

Jusque là rien de neuf si ce n’est que la dernière version de ansible nous demande de ne plus utiliser le with_items. En effet, nous pouvons désormais passer directement un tableau. On installe les paquets et active le démarrage de mysql au lancement de notre machine.

Ensuite rentrons dans l’administration mysql.

- name: "[MYSQL] - create database"
  mysql_db:
    name: "{{ mysql_db}}"
  become: yes

Là on vient de créer la base de données dont le nom a été défini dans nos variables par défauts (et donc que l’on peut écraser facilement par les variables d’inventory).

- name: "[MYSQL] - create user"
  mysql_user:
    name: "{{ mysql_user }}"
    password: "{{ mysql_password }}"
    priv: "*.*:ALL"
    host: "127.0.0.1"
  become: yes

Là on vient de créer un user et de lui donner tous les droits sur les bases de notre moteur (nous aurions pu limiter tout ceci bien sûr).

Découvrez  Le module APT de ansible, un indispensable

Voici donc pour la découverte du module mysql de ansible. Mais sachez qu’il existe la même chose pour :

  • influxdb
  • mongodb
  • postgres
  • proxysql

En savoir plus sur la documentation officielle de ansible à ce sujet.