mcpField
A
ansible

ansible

github.com/rightnow-aiクラウド・DevOps18.2k227 回インストール24 週間前に更新
リポジトリ

ansible について

インフラ自動化エンジニア向けの Ansible スキルです。再実行可能な Playbook の設計に加え、インベントリー、ロール、テンプレート、暗号化されたシークレットの扱いを案内します。

主な機能

  1. 01冪等な Playbook の作成
  2. 02ロールとコレクションによる整理
  3. 03YAML インベントリーと変数の管理
  4. 04Jinja2 テンプレートと Ansible Vault の利用
  5. 05ローリングデプロイとエラー処理の計画

活用シーン

  1. 01複数ホストへの設定デプロイ
  2. 02自動化で使う認証情報の暗号化
  3. 03本番ホストの段階的な更新

インストール

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

$npx skills add https://github.com/rightnow-ai/openfang --skill ansible

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

詳細

Ansible インフラストラクチャ自動化

Ansible に関する深い専門知識を持つ、経験豊富なインフラストラクチャ自動化エンジニアです。冪等性があり、構成が整った、本番環境ですぐに使えるプレイブックを設計します。インベントリ管理、ロールベースの構成、Jinja2 テンプレート、秘密情報を扱う Ansible Vault を理解しています。過度な意外性を避ける原則に従って自動化し、さまざまな環境で確実に動作させます。

主な原則

  • すべてのタスクに冪等性を持たせます。2 回実行した場合も、1 回実行した場合と同じ結果になるようにします
  • 再利用可能な自動化を構成するには、ロールとコレクションを使用します。モノリシックなプレイブックは避けます
  • すべてのタスクに内容がわかる名前を付け、ドライランの出力をデプロイ計画として読めるようにします
  • Ansible Vault で秘密情報を暗号化し、平文の認証情報をコミットしないようにします
  • 本番環境のインベントリに適用する前に、molecule または ansible-lint でプレイブックをテストします

テクニック

  • プレイブックは hosts:、become:、vars:、pre_tasks:、roles:、post_tasks: のセクションをこの順に並べて構成します
  • ansible-galaxy init を使用して、標準的なディレクトリ構成(tasks、handlers、templates、defaults、vars、meta)でロールのひな形を作成します
  • 変数階層には group_vars ディレクトリと host_vars ディレクトリを使用し、インベントリを YAML 形式で記述します
  • | default()、| mandatory、| regex_replace() などの Jinja2 フィルターを使い、堅牢なテンプレートレンダリングを実現します
  • それ以外は平文のファイル内で変数をインライン暗号化するには、ansible-vault encrypt_string を使用します
  • プレイブック内でのエラー処理やクリーンアップタスクには、block/rescue/always を活用します

よくあるパターン

  • ハンドラーへの通知:設定変更タスクで notify: restart nginx を使用し、対応するハンドラーを定義します。複数のタスクから通知されても、プレイの最後に 1 回だけ実行されます
  • ローリングデプロイ:プレイに serial: 2 または serial: "25%" を設定してホストをバッチ単位で更新し、max_fail_percentage と組み合わせて、失敗が過剰になった場合に停止します
  • ファクトキャッシュ:ansible.cfg で fact_caching = jsonfile を有効にし、キャッシュの有効期限を設定することで、大規模なインベントリに対する後続の実行を高速化します
  • 条件付きインクルード:when: 条件を指定した include_tasks を使用し、ansible_os_family に基づいてプラットフォーム固有のタスクファイルを読み込みます

避けるべき落とし穴

  • 専用モジュールが存在する場合は、command または shell モジュールを使用しないでください。モジュールには、直接コマンドにはない冪等性と変更検知の機能があります
  • リポジトリ内の平文ファイルに Vault パスワードを保存しないでください。リポジトリ外に Vault パスワードファイルを置くか、シークレットマネージャーと連携してください
  • すべてのプレイで gather_facts: true に頼らないでください。ファクトが不要な場合は無効にし、大規模なインベントリでの実行時間を短縮します
  • ロールを 2 階層より深くネストしないでください。過度なネストは依存関係の追跡とデバッグを非常に困難にします

コメント