ansible-playbook部署zabbix 📅 发布时间:2026/8/21 9:14:54 👁 浏览次数: 变量文件的基础使用文章目录变量文件的基础使用变量文件的基础使用目录创建用户管理 Playbook变量文件的加载位置使用 Ansible Vault 加密变量加密变量文件执行加密的 Playbook查看与解密组织变量主机变量与组变量目录结构组变量示例实战使用 Playbook 部署 Zabbix 监控系统环境说明安装 Ansible MySQL Collection完整 Playbookzabbix.yml注意事项变量文件的基础使用目录1. 变量文件的基础使用1.1 创建用户管理 Playbook1.2 变量文件的加载位置2. 使用 Ansible Vault 加密变量2.1 加密变量文件2.2 执行加密的 Playbook2.3 查看与解密3. 组织变量主机变量与组变量3.1 目录结构3.2 组变量示例4. 实战使用 Playbook 部署 Zabbix 监控系统4.1 环境说明4.2 安装 Ansible MySQL Collection4.3 完整 Playbookzabbix.yml4.4 注意事项创建用户管理 Playbook假设我们需要为一组 Web 服务器批量创建用户可以将用户列表独立存放在变量文件中便于维护。Playbook 文件user.ymlvim user.yml----hosts:webserversgather_facts:notasks:-name:Add the usersansible.builtin.user:name:{{ item.user }}password:{{ item.pass | password_hash(sha512) }}state:presentloop:{{ userlist }}变量文件userlist.ymlvim userlist.yml---userlist:-{user:user1,pass:pass1}-{user:user2,pass:pass2}-{user:user3,pass:pass3}执行 Playbook假设 webservers 组中只包含 node1ansible-playbook user.yml变量文件的加载位置默认情况下Ansible 会在 Playbook 所在目录寻找变量文件需通过 vars_files 或 include_vars 加载。若未显式指定路径则需将变量文件放在对应的 host_vars 或 group_vars 目录下见下文。使用 Ansible Vault 加密变量mkdirhosts_varscdhosts_varsmkdirnode1cdnode1cd..cd..cpuserlist.yml ./host_vars/node1/vault加密变量文件为了防止密码等敏感信息泄露可以使用 ansible-vault 对变量文件进行加密cdhostansible-vault encrypt vault加密后文件内容变为密文只有输入正确的 Vault 密码才能查看或使用。执行加密的 Playbook执行时需要提供 Vault 密码ansible-playbook user.yml --ask-vault-pass系统将提示输入密码验证通过后 Playbook 正常运行。#文件加密ansible-vault encrypt userlist.yml查看与解密查看加密文件内容需密码sudoansible-vault view userlist.yml输入密码即可查看文件内容执行方法ansible-playbook user.yml --ask-vault-pass解密文件ansible-vault decrypt userlist.yml组织变量主机变量与组变量目录结构为了更规范地管理不同主机或组的差异化变量推荐使用 host_vars 和 group_vars 目录ansible_project/ ├── group_vars/ │ └── webservers/ │ └── vars# 组变量文件├── host_vars/ │ └── node1/ │ └── vault# 主机变量文件可加密├── user.yml └── userlist.ymlmkdirgroup_varscdgroup_varsmkdirwebserverscdwebservers组变量示例在 group_vars/webservers/vars 中定义该组所有主机共用的变量vimvars --- http_port:8080ansible-playbook apache.yml使用时Playbook 可直接引用 {{ http_port }}。实战使用 Playbook 部署 Zabbix 监控系统环境说明目标主机zabbix-server组或主机操作系统RHEL 9 / Rocky Linux 9如需 RHEL 7 可调整仓库 URL数据库MySQL使用 MariaDB安装 Ansible MySQL CollectionPlaybook 中使用了 mysql_db 和 mysql_user 模块需要先安装对应 Collectionansible-galaxy collectioninstallansible.mysql完整 Playbookzabbix.yml----hosts:zabbix-servertasks:# 1. 添加 Zabbix 官方仓库Rocky 9 版本-name:add zabbix repoansible.builtin.yum:name:https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-latest-6.0.el9.noarch.rpmstate:present# 2. 安装 Zabbix 服务端、Web、SQL脚本、SELinux策略及Agent-name:install zabbix-serveransible.builtin.yum:name:-zabbix-server-mysql-zabbix-web-mysql-zabbix-sql-scripts-zabbix-selinux-policy-zabbix-agentstate:present# 3. 安装 MySQL此处使用 MariaDB-name:install mysql-serveransible.builtin.yum:name:-mariadb-server-python3-PyMySQL# Python 连接 MySQL 的驱动state:present# 4. 启动并启用 MariaDB 服务-name:enable service mysqlansible.builtin.service:name:mariadbstate:startedenabled:yes# 5. 创建 Zabbix 数据库指定字符集-name:init zabbix databasemysql_db:name:zabbixstate:presentencoding:utf8mb4collation:utf8mb4_binvars:ansible_python_interpreter:/usr/bin/python3# 6. 创建 Zabbix 数据库用户并授权-name:create zabbix usermysql_user:name:zabbixstate:presenthost:localhostpassword:zabbixpriv:zabbix.*:ALLvars:ansible_python_interpreter:/usr/bin/python3# 7. 临时开启 log_bin_trust_function_creators导入数据需要-name:set log_bin_trust_function_creators to 1mysql_variables:variable:log_bin_trust_function_creatorsvalue:1vars:ansible_python_interpreter:/usr/bin/python3# 8. 导入 Zabbix 初始数据库结构使用 zcat 解压并导入-name:import zabbix sql scriptsansible.builtin.shell:|zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-setutf8mb4 -uzabbix -pzabbix zabbix touch /etc/zabbix/.init_db_sql.lockargs:creates:/etc/zabbix/.init_db_sql.lockvars:ansible_python_interpreter:/usr/bin/python3# 9. 导入完成后关闭 log_bin_trust_function_creators-name:set log_bin_trust_function_creators to 0mysql_variables:variable:log_bin_trust_function_creatorsvalue:0vars:ansible_python_interpreter:/usr/bin/python3ansible-playbook zabbix.yml注意事项Python 解释器路径使用 mysql_* 模块时需要明确指定 ansible_python_interpreter 为 /usr/bin/python3否则可能报错。幂等性通过 creates 参数判断锁文件是否存在避免重复导入 SQL 脚本。密码安全生产环境应将数据库密码加密存储Vault并避免在 Playbook 中明文书写。操作系统版本请根据目标系统的发行版选择合适的 Zabbix 仓库 URLRHEL 7/8/9。