zauberpony.mysql-query

Ansible 角色:mysql_query

Ansible 模块用于在 MySQL 表中设置值或插入记录。对于将配置存储在数据库中的 web 应用程序非常有用。例如,icingaweb2 需要将初始用户插入到数据库中。安装向导可以完成此任务,但使用 Ansible 您想要自动化安装 ;)

在 Ansible Galaxy 页面列出为 zauberpony.mysql-query.

安装

通过 ansible-galaxy 安装,使用命令 ansible-galaxy install zauberpony.mysql-query,或者手动将文件 mysql_query 放入您的 roles_path 中。

要求:

MySQL 的 Python 绑定(就像核心的 mysql_* 模块):

  • MySQLdb(仅适用于 Python 2.x)
  • PyMySQL(适用于 Python 2.7 和 Python 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),这个例子将:

  • 查找 where id = 14 and email = 'john@example.com' 的行
    • 如果行不存在:插入一行,id=14,email='john@example.com',role="admin",department="IT",password="secret",last_login=1469264933
    • 如果行存在:检查 values(role, department)是否与给定值匹配,如果不匹配:更新

因此:

  • identifiers 用于检查行的存在性并找到行
  • defaults 用作行不在时的默认值(即:仅用于插入)
  • values 是 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 的 检查模式。只需多次运行 ./demo.yml./checkmode-demo.yml,带 -C 运行和不带 -C 运行,以感受它。

关于项目

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

安装
ansible-galaxy install zauberpony.mysql-query
许可证
gpl-3.0
下载
239.4k
拥有者