用途:该技能定位为资深基础设施自动化工程师,帮助设计幂等、结构良好、可用于生产环境的 Ansible playbook,覆盖清单管理、基于角色的组织、Jinja2 模板与 Ansible Vault 密钥管理。
主要能力与原则:每个任务必须幂等,重复执行结果一致;用角色与集合组织可复用自动化,避免单体 playbook;为每个任务写描述性名称,使 dry-run 输出像部署计划;密钥用 Ansible Vault 加密,不提交明文凭据;上生产清单前用 molecule 或 ansible-lint 测试。
使用方式与技巧:playbook 按 hosts、become、vars、pre_tasks、roles、post_tasks 顺序组织;用 ansible-galaxy init 生成标准角色目录(tasks、handlers、templates、defaults、vars、meta);清单用 YAML 格式,配合 group_vars 与 host_vars 目录形成变量层级;使用 | default()、| mandatory、| regex_replace() 等 Jinja2 过滤器;用 ansible-vault encrypt_string 对明文文件中的内联变量加密;用 block/rescue/always 处理错误与清理。
常见模式:配置变更任务用 notify: restart nginx 触发 handler,handler 在 play 结束时只执行一次;滚动部署用 serial: 2 或 serial: "25%" 分批更新,配合 max_fail_percentage 在失败过多时中止;在 ansible.cfg 中启用 fact_caching = jsonfile 并设置缓存超时以加速大清单的后续运行;用 include_tasks 配合 when: 条件按 ansible_os_family 加载平台相关任务文件。
限制与需避免的陷阱:有专用模块时不要用 command 或 shell 模块;不要把 vault 密码明文存放在仓库内,应放在仓库外的密码文件或接入密钥管理器;不要每个 play 都依赖 gather_facts: true,不需要事实时关闭以减少大清单执行时间;角色嵌套不要超过两层,否则依赖追踪与调试会非常困难。资料未提供具体安装命令、收费与平台支持信息。