zauberpony.mysql-query

Rol de Ansible: mysql_query

Módulo de Ansible para establecer valores en una tabla de MySQL o insertar registros. Útil para aplicaciones web que almacenan configuraciones en la base de datos. Por ejemplo, icingaweb2 requiere que el usuario inicial sea insertado en la base de datos. El asistente de instalación podría hacerlo, pero con Ansible quieres automatizar la instalación ;)

Listado en la página de Ansible Galaxy como zauberpony.mysql-query.

Instalación

Instala a través de ansible-galaxy, ansible-galaxy install zauberpony.mysql-query, o manualmente coloca el archivo mysql_query en tu roles_path.

Requisitos:

Enlaces de Python para MySQL (igual que los módulos core mysql_*):

  • MySQLdb (solo Python 2.x)
  • PyMySQL (Python 2.7 y python 3.x)

Ejemplo de playbook

Un ejemplo completo que asegura que un registro está presente en una tabla dada.


---
- hosts: all
  roles:
    - zauberpony.mysql-query
  tasks:
    - name: insertar una fila
      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

Dada una tabla simple_table con columnas (id, email, role, department, password, last_login), este ejemplo haría:

  • Buscar una fila donde id = 14 y email = 'john@example.com'
    • si la fila no existe: insertar una fila con id=14, email='john@example.com', role="admin", department="IT", password="secret", last_login=1469264933
    • si la fila existe: verificar si los valores (role, department) coinciden con los valores dados, si no: actualizar

Así:

  • identifiers se utilizan para verificar la existencia y encontrar una fila
  • defaults se utilizan como valores por defecto si la fila no está presente (es decir, solo se usan para insertar)
  • values son el estado de la fila que Ansible asegura

Un ejemplo completo que asegura que un registro no esté presente en una tabla dada.


---
- hosts: all
  roles:
    - zauberpony.mysql-query
  tasks:
    - name: eliminar una fila
      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]'

Ejecutando los ejemplos desde las fuentes

Asegúrate de tener un servidor MySQL en funcionamiento (por ejemplo, usa el archivo docker-compose.yml) y actualiza los parámetros de conexión si es necesario.

Ejecuta con ansible-playbook -i demo.yml (o incluso más simple ./demo.yml) y deshazlo (para empezar de nuevo) con ansible-playbook -i reset.yml.

Después de ejecutar ./demo.yml, puedes ejecutar ./checkmode-demo.yml -C para probar el modo de verificación de Ansible. Simplemente ejecuta ./demo.yml y ./checkmode-demo.yml varias veces con -C y sin -C para familiarizarte con ello.

Acerca del proyecto

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

Instalar
ansible-galaxy install zauberpony.mysql-query
Licencia
gpl-3.0
Descargas
239.4k
Propietario