ansible多环境并行管理的关键在于同一套代码配合清单隔离、变量分层、凭据分离和执行控制:清单按环境独立存放,变量分级定义,敏感信息加密,凭据与权限严格区分,部署命令加环境标签与校验。

Ansible 多环境并行管理的关键,不在于写多套剧本,而在于用同一套代码、不同变量和清单,精准驱动不同环境。生产与测试环境的区分,核心落在清单隔离、变量分层、凭据分离、执行控制四个实操点上。
清单按环境独立存放
每个环境使用专属 inventory 目录,避免混用主机或误操作:
- 目录结构示例:
inventories/production/和inventories/testing/,各自包含hosts、group_vars/、host_vars/ - 生产清单只列真实服务器 IP 和角色(如
[webservers]、[dbservers]),测试清单可含 Vagrant 或容器 IP - 运行时显式指定:
ansible-playbook -i inventories/testing/site.yml或-i inventories/production/site.yml
变量按环境分级定义
利用 Ansible 的变量加载优先级,把差异项落到对应层级:
- 公共配置(如 playbook 结构、角色逻辑)放在
group_vars/all/或角色 defaults 中 - 环境特有参数(端口、域名、调试开关)写入
group_vars/production/和group_vars/testing/ - 敏感信息(数据库密码、API 密钥)绝不硬编码,统一由
vars_files引入加密文件(如vault_password_file)
凭据与权限严格隔离
测试环境可放宽 SSH 认证或使用临时密钥;生产环境必须强制密钥+堡垒机+最小权限账户:
- 在 inventory 中为不同环境指定不同连接用户:
ansible_user: deploy(测试) vsansible_user: prodadmin(生产) - 生产 inventory 中禁用
become: yes全局提升,仅对必要任务启用,并限制become_user - Ansible 配置中设
host_key_checking=False仅限测试环境,生产必须保持True
部署命令加环境标签与校验
靠命名和前置检查防止“跑错环境”:
- Playbook 文件名体现用途,如
deploy-web-prod.yml和deploy-web-test.yml,或统一用site.yml+ 清单路径区分 - 在 playbook 开头加入
vars_prompt或assert模块,例如验证env_name == 'production'时才允许继续 - CI/CD 流水线中绑定环境变量(如
ANSIBLE_ENV=production),配合脚本做路径与权限校验











