mysql-query
Ansible Роль: mysql_query
Модуль Ansible для установки значений в таблицу mysql или для вставки записей. Полезно для веб-приложений, которые хранят конфигурации в базе данных. Например, icingaweb2 требует, чтобы первоначальный пользователь был вставлен в базу данных. Мастер установки может сделать это, но с помощью ansible вы хотите автоматизировать установку ;)
Указано на странице Ansible Galaxy как zauberpony.mysql-query.
Установка
Установите через ansible-galaxy, ansible-galaxy install zauberpony.mysql-query
, или вручную поместите файл mysql_query в ваш roles_path.
Требования:
python-обертки для mysql (так же, как и основные модули mysql_*):
- MySQLdb (только для Python 2.x)
- PyMySQL (для Python 2.7 и 3.x)
Пример плейбука
Полный пример, который гарантирует наличие записи в указанной таблице.
---
- hosts: all
roles:
- zauberpony.mysql-query
tasks:
- name: вставить строку
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
Данная таблица simple_table
со столбцами (id, email, role, department, password, last_login) будет:
- Искать строку где id = 14 и email = 'john@example.com'
- если строки нет: вставить строку с id=14, email='john@example.com', role="admin", department="IT", password="secret", last_login=1469264933
- если строка есть: проверить, совпадают ли значения (role, department) с заданными значениями, если нет: обновить
Таким образом:
- идентификаторы используются для проверки существования и для поиска строки
- значения по умолчанию используются как значения по умолчанию, если строки нет (т.е.: используются только для вставки)
- значения – это состояние строки, которое ansible обеспечивает
Полный пример, который гарантирует отсутствие записи в указанной таблице.
---
- hosts: all
roles:
- zauberpony.mysql-query
tasks:
- name: вставить строку
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]'
Запуск примеров из исходников
Убедитесь, что у вас есть работающий сервер mysql (например: используйте файл docker-compose.yml) и обновите параметры подключения, если это необходимо.
Запустите через ansible-playbook -i demo.yml
(или еще проще ./demo.yml
), а для восстановления (чтобы начать заново) используйте ansible-playbook -i reset.yml
.
После выполнения ./demo.yml
вы можете запустить ./checkmode-demo.yml -C
, чтобы протестировать режим проверки ansible check mode.
Просто запустите ./demo.yml
и ./checkmode-demo.yml
несколько раз с -C
и без -C
, чтобы понять, как это работает.
module to insert/update/delete a record in a mysql table
ansible-galaxy install zauberpony/ansible-mysql-query