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.

À propos du projet

module to insert/update/delete a record in a mysql table

Installer
ansible-galaxy install zauberpony.mysql-query
Licence
gpl-3.0
Téléchargements
239.4k
Propriétaire