用途
Ansible Generator 用于生成或搭建 Ansible 相关内容。当请求涉及创建、生成或脚手架化 Ansible 资产时使用本技能,例如:创建带 TLS 的 nginx 部署 playbook、为 PostgreSQL 备份生成 Ansible role、编写 prod 与 staging 的 inventory 文件、构建可复用的用户配置 tasks、初始化包含 ansible.cfg 和 requirements.yml 的 Ansible 项目,或获取安装 Docker 的快速片段。
如果请求仅为验证或调试(语法错误、lint 失败、Molecule/测试失败),不应将本技能作为主要工作流,而应使用 ansible-validator。
主要能力
- 生成完整 playbook、role、tasks 文件、inventory 和项目配置文件。
- 支持三种请求模式:full-generation(完整生成)、snippet-only(仅片段)、docs-only(仅文档)。
- 按输出类型引用本地参考与模板,包括 best-practices.md、module-patterns.md,以及 playbook、role、inventory、project 等模板。
- 生成时遵循规范:使用 FQCN 模块名(优先 ansible.builtin.*)、保持任务幂等、使用动词开头的描述性任务名、使用 true/false 布尔值、对敏感值添加 no_log: true、替换所有占位符。
- 对 RHEL 8+/CentOS 8+ 优先使用 ansible.builtin.dnf。
- 默认在生成后运行 ansible-validator 进行验证,并在工具不可用时执行手动静态检查。
使用方式
技能按确定性执行流程运行,依次经过以下阶段:
- Stage 0:分类请求模式。确定 full-generation、snippet-only 或 docs-only。
- Stage 1:收集最小输入。若缺少细节则简要询问;若用户未提供,则使用安全默认值并说明假设。例如 playbook 默认 hosts: all、become: false、OS 无关模块;role 默认使用任务域命名、Debian + RedHat 变量;inventory 默认 production/staging 组与占位符。
- Stage 2:提取参考。从本地参考与模板中提取 FQCN 要求、幂等规则、命名、安全期望,以及对应任务类型的模块/参数模式;识别所有需替换的 [PLACEHOLDER]。
- Stage 3:生成。应用生成标准,替换所有占位符后输出。
- Stage 4:验证或应用例外。full-generation 默认运行 ansible-validator,并在每次修复后重跑;若验证器/工具不可用,则执行手动静态检查(YAML 结构、占位符扫描、FQCN/幂等/安全审查)并提供确切的延迟验证命令。snippet-only 默认跳过完整验证器,仅做内联健全性检查。docs-only 不进行运行时验证。离线环境下继续使用本地参考与模板,跳过外部文档查询,优先使用内置模块实现。
对于依赖非内置模块/集合的请求,会识别集合与模块及版本敏感性,先检查本地参考;若仍无法解决且网络/工具可用,则查询 Context7(mcp__context7__resolve-library-id、mcp__context7__query-docs);若 Context7 不可用,则使用官方 Ansible 文档 / Ansible Galaxy 页面;若外部查询不可用,则提供内置模块回退方案并说明限制。使用集合模块时始终包含集合安装指引。
适用场景
- 部署服务(如带 TLS 的 nginx)到多操作系统。
- 为数据库备份等任务生成 role。
- 编写多环境 inventory。
- 构建可复用的用户配置 tasks。
- 初始化 Ansible 项目配置。
- 获取快速任务片段。
限制
- 不适用于纯验证或调试请求,此类应使用 ansible-validator。
- 若缺少必要输入且用户未提供,将使用安全默认值并声明假设,可能不完全符合实际环境。
- 离线环境下无法进行外部文档查询,部分检查与查找会受影响,需后续外部验证。
- 验证行为受 Validation Exceptions Matrix 约束,跳过检查时需说明具体原因与延迟命令。
- 关于收费、价格、平台支持等具体信息暂未提供。