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
Лицензия
gpl-3.0
Загрузки
234241
Владелец