zauberpony.mysql-query
Rôle Ansible : mysql_query
Module Ansible pour définir des valeurs dans une table MySQL ou insérer des enregistrements. Utile pour les applications web qui stockent des configurations dans une base de données. Par exemple, icingaweb2 nécessite que l'utilisateur initial soit inséré dans la base de données. L'assistant d'installation pourrait le faire, mais avec Ansible, vous souhaitez automatiser l'installation ;)
Liste sur la page Ansible Galaxy sous zauberpony.mysql-query.
Installation
Installez via ansible-galaxy, ansible-galaxy install zauberpony.mysql-query
, ou placez manuellement le fichier mysql_query dans votre roles_path.
Exigences :
Liens Python pour MySQL (comme les modules core mysql_*) :
- MySQLdb (uniquement pour Python 2.x)
- PyMySQL (Python 2.7 et Python 3.x)
Exemple de playbook
Un exemple complet qui garantit qu'un enregistrement est présent dans une table donnée.
---
- hosts: all
roles:
- zauberpony.mysql-query
tasks:
- name: insérer une ligne
mysql_query:
name: ansible-playbook-example
table: simple_table
login_host: ::1
login_user: root
login_password: password
identifiers:
id: 14
email: '[email protected]'
values:
role: "admin"
department: 'IT'
defaults:
password: "secret"
last_login: 1469264933
Étant donné une table simple_table
avec les colonnes (id, email, role, department, password, last_login), cet exemple ferait :
- Rechercher une ligne où id = 14 et email = 'john@example.com'
- si la ligne n'existe pas : insérer une ligne avec id=14, email='john@example.com', role="admin", department="IT", password="secret", last_login=1469264933
- si la ligne existe : vérifier si les valeurs (role, department) correspondent aux valeurs données, si ce n'est pas le cas : mettre à jour
Ainsi :
- identifiers sont utilisés pour vérifier l'existence et trouver une ligne
- defaults sont utilisés comme valeurs par défaut si la ligne n'est pas présente (c'est-à-dire : uniquement utilisés pour l'insertion)
- values sont l'état de la ligne que Ansible garantit
Un exemple complet qui garantit qu'un enregistrement n'est pas présent dans une table donnée.
---
- hosts: all
roles:
- zauberpony.mysql-query
tasks:
- name: insérer une ligne
mysql_query:
state: absent
name: ansible-playbook-example
table: simple_table
login_host: ::1
login_user: root
login_password: password
identifiers:
id: 14
email: '[email protected]'
Exécution des exemples à partir des sources
Assurez-vous d'avoir un serveur MySQL en cours d'exécution (par exemple : utilisez le fichier docker-compose.yml) et mettez à jour les paramètres de connexion si nécessaire.
Exécutez via ansible-playbook -i demo.yml
(ou encore plus simplement ./demo.yml
) et annulez (pour tout recommencer) avec ansible-playbook -i reset.yml
.
Après avoir exécuté ./demo.yml
, vous pouvez exécuter ./checkmode-demo.yml -C
pour tester le mode de vérification d'Ansible.
Exécutez simplement ./demo.yml
et ./checkmode-demo.yml
plusieurs fois avec -C
et sans -C
pour vous familiariser avec cela.
module to insert/update/delete a record in a mysql table
ansible-galaxy install zauberpony.mysql-query