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.
module to insert/update/delete a record in a mysql table
ansible-galaxy install zauberpony.mysql-query