SuperAPI AI 工具集

ansible-generator

部署与运维

查看项目

更新于 10-15 14:27

技能介绍

用途

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 进行验证,并在工具不可用时执行手动静态检查。

使用方式

技能按确定性执行流程运行,依次经过以下阶段:

  1. Stage 0:分类请求模式。确定 full-generation、snippet-only 或 docs-only。
  2. Stage 1:收集最小输入。若缺少细节则简要询问;若用户未提供,则使用安全默认值并说明假设。例如 playbook 默认 hosts: all、become: false、OS 无关模块;role 默认使用任务域命名、Debian + RedHat 变量;inventory 默认 production/staging 组与占位符。
  3. Stage 2:提取参考。从本地参考与模板中提取 FQCN 要求、幂等规则、命名、安全期望,以及对应任务类型的模块/参数模式;识别所有需替换的 [PLACEHOLDER]。
  4. Stage 3:生成。应用生成标准,替换所有占位符后输出。
  5. 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 约束,跳过检查时需说明具体原因与延迟命令。
  • 关于收费、价格、平台支持等具体信息暂未提供。