mcpField
A
ansible-generator

ansible-generator

github.com/akin-ozerクラウド・DevOps329825 回インストール16 週間前に更新
リポジトリ

ansible-generator について

ansible-generatorは、Ansibleのプレイブック、ロール、インベントリ、タスクファイル、プロジェクト設定を生成するスキルです。完全なファイル、スニペット、ドキュメントを区別し、生成物の検証手順も示します。

主な機能

  1. 01プレイブックとロールの生成
  2. 02インベントリとタスクファイルの生成
  3. 03Ansibleプロジェクト設定のひな形
  4. 04冪等性とセキュリティの規約
  5. 05検証手順と代替チェック

活用シーン

  1. 01サービスをデプロイするプレイブックの作成
  2. 02再利用可能なAnsibleロールのひな形作成
  3. 03本番環境とステージング環境のインベントリ準備
  4. 04Ansibleプロジェクト設定の初期化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/akin-ozer/cc-devops-skills --skill ansible-generator

インストール後、Claude Code で/ansible-generatorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
assets/templates/inventory/
hosts
hosts.yml
assets/templates/inventory/group_vars/
all.yml
databases.yml
webservers.yml
assets/templates/inventory/host_vars/
web1.example.com.yml
assets/templates/playbook/
basic_playbook.yml
assets/templates/project/
.ansible-lint
ansible.cfg
requirements.yml
assets/templates/role/
README.md
assets/templates/role/defaults/
main.yml
assets/templates/role/files/
.gitkeep
assets/templates/role/handlers/
main.yml
assets/templates/role/meta/
argument_specs.yml
main.yml
assets/templates/role/molecule/default/
converge.yml
molecule.yml
assets/templates/role/tasks/
main.yml
assets/templates/role/templates/
config.j2
assets/templates/role/vars/
Debian.yml
main.yml
RedHat.yml
references/
best-practices.md
module-patterns.md
test/playbooks/
nginx-tls-playbook.yml
test/playbooks/templates/
nginx-tls.conf.j2
test/roles/sample-role/defaults/
main.yml
test/roles/sample-role/handlers/
main.yml

詳細

Ansible ジェネレーター

トリガーフレーズ

Ansible のコンテンツを生成またはひな形作成する依頼には、このスキルを使用します。たとえば、次のような依頼です。

  • 「TLS を使って nginx をデプロイするプレイブックを作成してください。」
  • 「PostgreSQL のバックアップ用に Ansible ロールを生成してください。」
  • 「本番環境とステージング環境のインベントリファイルを作成してください。」
  • 「ユーザーのプロビジョニングに使える再利用可能な Ansible タスクを作成してください。」
  • 「ansible.cfg と requirements.yml を含む Ansible プロジェクトを初期化してください。」
  • 「Docker をインストールする簡単な Ansible スニペットをください。」

リクエストが検証またはデバッグのみ(構文エラー、lint の失敗、Molecule/テストの失敗)の場合、このスキルを主なワークフローとして使用しないでください。その場合は ansible-validator を使用してください。

決定論的な実行フロー

次のステージを順番に実行してください。Validation Exceptions Matrix で明示的に許可されている場合を除き、ステージを省略しないでください。

Stage 0: リクエストモードを分類する

まず、次のいずれかのモードを判定します。

モードユーザーの典型的な意図成果物
full-generationプレイブック/ロール/インベントリ/プロジェクトのファイル一式を「作成/構築/生成」する完成した、本番環境ですぐに使えるファイル一式
snippet-only完全なファイルの文脈を伴わない「簡単なスニペット/例」目的を絞ったタスク/プレイブックのスニペット
docs-only説明、パターンの比較、または概念的なガイダンスのみ説明コンテンツ。必要に応じて例を追加
Stage 1: 最低限必要な入力を収集する

詳細が不足している場合は、簡潔に質問してください。ユーザーから回答がない場合は、安全な既定値を使用して進め、前提を明記してください。

リソースの種類必要な入力不足時の安全な既定値
プレイブック対象ホスト、権限昇格(become)、OS ファミリー、目的hosts: all、become: false、OS に依存しないモジュール
ロールロール名、主要なサービス/パッケージ、サポート対象 OSタスクの分野に基づくロール名、Debian + RedHat の変数
タスクファイル操作の範囲、必須変数、実行コンテキスト変数を文書化した、単独で再利用可能なタスク
インベントリ環境、ホストグループ、ホスト名/IP アドレスプレースホルダーを含む production/staging グループ
プロジェクト設定コレクション/ロールの依存関係、lint ポリシー最小限の ansible.cfg、requirements.yml、.ansible-lint
Stage 2: 参照資料の抽出チェックリスト

コンテンツの作成を始める前に、ローカルの参照資料/テンプレートから次の情報を抽出してください。

必須の参照資料
  • references/best-practices.md
    • 抽出する情報:FQCN の要件、冪等性のルール、命名規則、セキュリティ上の要件。
  • references/module-patterns.md
    • 抽出する情報:対象タスクの種類に適したモジュール/パラメーターのパターン。
出力の種類ごとに必要なテンプレート
  • プレイブック:assets/templates/playbook/basic_playbook.yml
  • ロール:assets/templates/role/(テストのひな形作成用に meta/argument_specs.yml と molecule/default/ を含む)
  • インベントリ(INI):assets/templates/inventory/hosts
  • インベントリ(YAML):assets/templates/inventory/hosts.yml
  • プロジェクト設定:assets/templates/project/ansible.cfg、assets/templates/project/requirements.yml、assets/templates/project/.ansible-lint
抽出時の確認項目
  • 置換が必要な [PLACEHOLDER] をすべて特定します。
  • モジュール選択の優先順位を決めます(まず ansible.builtin.*)。
  • OS 固有の動作が必要な場合は、OS に適したパッケージ管理パターンを少なくとも 1 つ確認します。
  • 必要な前提条件(コレクション、バイナリ、対象に関する前提)を確認します。
Stage 3: 生成する

次の生成基準を適用してください。

  1. FQCN のモジュール名を使用します(第一候補は ansible.builtin.*)。
  2. タスクを冪等に保ちます(必要に応じて state、creates/removes、changed_when を使用)。
  3. 動詞で始まる、内容の分かりやすいタスク名を使用します。
  4. 真偽値には yes/no ではなく true/false を使用します。
  5. 機密情報には no_log: true を追加します。
  6. 出力を提示する前に、すべてのプレースホルダーを置き換えます。
  7. RHEL 8+/CentOS 8+ では ansible.builtin.dnf を優先します(古いシステムでのみ従来の yum を使用)。
Stage 4: 検証する(既定)または例外を適用する(フォールバック)

検証を決定論的かつ非ブロッキングにするため、以下のマトリックスを使用してください。

検証の例外マトリックス

シナリオデフォルトの動作許可される代替手段報告する内容
full-generation生成後、および各修正パスの後に ansible-validator を実行しますバリデーター/ツールを利用できない場合は、手動の静的チェック(YAML の構造、プレースホルダーのスキャン、FQCN/冪等性/セキュリティのレビュー)を実施し、後で実行する検証コマンドを正確に提示します実施したチェック、スキップしたチェックとその理由を明示します
snippet-onlyデフォルトでは完全なバリデーターをスキップし、インラインの簡易チェックを実施しますユーザーから依頼された場合、またはスニペットを完全なファイルにする場合のみ、完全なバリデーターを実行します出力がスニペットのみのため、検証が限定的であることを明記します
docs-onlyランタイム検証は実施しません不要です実行可能な成果物を生成していないことを明記します
オフライン環境(Web/ドキュメントにアクセスできない場合)ローカルのリファレンスとテンプレートを使用して続行します外部ドキュメントの検索をスキップし、組み込みモジュールによる実装を優先し、後で外部検証するためのメモを提示しますオフラインであることと、影響を受けるチェック/検索を明記します

リソース生成のガイダンス

Playbook
  • 構成の基礎として assets/templates/playbook/basic_playbook.yml を使用します。
  • 必要に応じて、ヘッダーコメント、pre_tasks/tasks/post_tasks、ハンドラー、タグを含めます。
  • サービスのデプロイや設定に関わる場合は、ヘルスチェックを追加します。
Role
  • assets/templates/role/ の構成を基に作成します。
  • デフォルト値は defaults/main.yml に、高い優先度のロール変数は vars/main.yml に記述します。
  • 関連する場合は、OS 固有の変数(vars/Debian.yml、vars/RedHat.yml)を含めます。
  • 変数の検証用に meta/argument_specs.yml を追加します。
  • 本番環境向けのロールには、assets/templates/role/molecule/ を基にした molecule/default/ のひな形を含めます。
タスクファイル
  • 対象範囲を絞り、再利用しやすくします。
  • 必須の入力変数をコメントで説明します。
  • 環境や OS に依存する操作には条件分岐を使用します。
インベントリ
  • 論理的なホストグループと、必要に応じてグループ階層を構成します。
  • 変数の階層化は意図的に行います:group_vars/all.yml -> グループ -> ホスト。
  • シンプルなトポロジーでは INI 形式(hosts)をデフォルトで使用し、ユーザーから指定された場合、または階層が複雑な場合は YAML 形式(hosts.yml)を使用します。
プロジェクト設定
  • 基本となる ansible.cfg、requirements.yml、.ansible-lint を用意します。
  • デフォルト値は実用的で編集しやすいものにします。

カスタムモジュールとコレクション

リクエストで組み込みではないモジュール/コレクションが必要な場合:

  1. コレクションとモジュールを特定し、必要なバージョン依存性を確認します。
  2. まずローカルの references/module-patterns.md を確認します。
  3. それでも解決せず、ネットワーク/ツールを利用できる場合は、Context7 に問い合わせます:
    • mcp__context7__resolve-library-id
    • mcp__context7__query-docs
  4. Context7 を利用できない場合は、Ansible の公式ドキュメント/Ansible Galaxy のページを使用します。
  5. 外部情報を参照できない場合は、組み込み機能による代替方法を提示し、制約を明記します。

コレクションのモジュールを使用する場合は、必ずコレクションのインストール方法を記載します。

標準的な使用例のフロー

フロー A:完全生成(Playbook)

ユーザーのプロンプト:「Ubuntu と RHEL に TLS 対応の nginx をデプロイする Playbook を作成してください。」

  1. full-generation と分類します。
  2. 必要な入力(ホスト、証明書のパス、権限昇格、サービス名)を収集/確認します。
  3. 必要なリファレンス(best-practices.md、module-patterns.md)と Playbook テンプレートを抽出します。
  4. OS ごとの条件分岐(apt/dnf)、ハンドラー、設定テンプレートの検証を含む完全な Playbook を生成します。
  5. ansible-validator を実行します。
  6. チェックに合格するまで問題を修正して再実行します(または、ツールを利用できない場合はマトリックスの代替手段を適用します)。
  7. 検証の概要、使用コマンド、前提条件を添えて出力を提示します。
フロー B:クイックスニペット(タスクブロック)

ユーザーのプロンプト:「ユーザーと SSH キーを作成するスニペットをください。」

  1. snippet-only と分類します。
  2. ansible.builtin.user と ansible.builtin.authorized_key の最小限のモジュールパターンを抽出します。
  3. FQCN、冪等性、変数プレースホルダーを含む簡潔なスニペットを生成します。
  4. インラインの健全性チェック(YAML の構造、FQCN、明らかな冪等性とセキュリティ)を実施します。
  5. スニペットを提示し、snippet-only モードのため完全なバリデーターの実行を省略したことを明記します。

出力要件

実行可能な成果物を生成する場合は、次のレスポンス構造を使用してください。

## Generated [Resource Type]: [Name]

**Validation Status:** [Passed / Partially validated / Skipped with reason]
- YAML syntax: [status]
- Ansible syntax: [status]
- Lint: [status]

**Summary:**
- [What was generated]
- [Key implementation choices]

**Assumptions:**
- [Defaults or inferred values]

**Usage:**
```bash
[Exact command(s)]

前提条件:

  • [コレクション、バイナリ、環境要件]

## Done Criteria

This skill execution is complete only when all applicable items are true:

- Trigger decision is explicit (`full-generation`, `snippet-only`, or `docs-only`).
- Required references/templates were consulted for the selected artifact type.
- Generated output has no unresolved placeholders.
- Validation followed default behavior or a documented exception from the matrix.
- Any skipped checks include a concrete reason and deferred command(s).
- Final output includes summary, assumptions, usage, and prerequisites.

コメント