Ansible 多环境配置管理核心是变量分层、敏感信息隔离、环境隔离执行:变量分默认值、环境级、单机特例三层;敏感信息用 ansible-vault 加密存 vault.yml;各环境 inventory 物理隔离;配置文件用 template 渲染并校验。

在 Linux 中用 Ansible 管理多环境配置文件,核心不是“存得多”,而是“分得清、管得住、不泄露”。关键在于变量分层、敏感信息隔离、环境隔离执行这三点。
变量严格分三层,各司其职
避免把所有配置混在同一个 YAML 里。按作用域拆开:
-
默认值:放在
roles/*/defaults/main.yml,只写安全兜底项(如nginx_port: 80),不放业务参数 -
环境级配置:用
group_vars/webservers.yml或group_vars/staging.yml控制整组行为(如app_env: staging、log_level: debug) -
单机特例:仅在必要时用
host_vars/db01.yml(比如某台数据库磁盘路径不同),且必须加注释说明原因
敏感信息统一加密,绝不明文落地
密码、API Key、密钥等绝不能出现在任何未加密的 YAML 文件中:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 用
ansible-vault encrypt_string加密后,存入group_vars/all/vault.yml或对应环境的vault.yml - Playbook 中直接引用变量名(如
{{ db_password }}),执行时传入 vault 密码文件:ansible-playbook site.yml --vault-password-file .vault_pass - 确保
.vault_pass文件权限为600,且不提交到 Git
环境清单物理隔离,防止误操作
不同环境(dev/staging/prod)必须用独立的 inventory 目录,不共用 hosts 文件:
- 目录结构示例:
inventories/dev/hosts.yml、inventories/prod/hosts.yml - 每个 inventory 下配专属
group_vars/,例如inventories/prod/group_vars/all/vault.yml - 执行时强制指定 inventory:
ansible-playbook -i inventories/prod/site.yml site.yml,避免漏掉-i导致跑错环境
配置文件分发优先用 template,不用 copy
带变量的配置(如 Nginx、MySQL 配置)必须用 template 模块,而非 copy:
-
template支持 Jinja2 变量渲染,能根据app_env自动切换日志路径、连接池大小等 - 模板文件放在
roles/<name>/templates/config.j2</name>,变量从当前作用域自动注入 - 配合
validate参数校验语法(如mysql --verbose --help --no-defaults -c %s),防止生成错误配置导致服务启动失败

















