mcpField
C
creating-ansible-playbooks

creating-ansible-playbooks

github.com/jeremylongshoreクラウド・DevOps2.9k50 回インストール2 日前に更新
リポジトリ

creating-ansible-playbooks について

インフラ自動化向けに、Ansible のプレイブック、ロール、インベントリ、テンプレートの作成を支援するスキルです。開発者や運用担当者がサーバー構築、アプリ配備、設定管理、セキュリティ強化を行う際に、検証や冪等性の確認も案内します。

主な機能

  1. 01構築・配備用プレイブックの生成
  2. 02再利用可能な Ansible ロール
  3. 03インベントリと環境変数の設定
  4. 04Jinja2 設定テンプレートの生成
  5. 05lint・ドライラン・冪等性の検証

活用シーン

  1. 01サーバーの構築とサービス設定
  2. 02再利用可能なロールによるアプリ配備
  3. 03サーバー群の SSH 設定強化

インストール

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

$npx skills add https://github.com/jeremylongshore/tons-of-skills-marketplace --skill creating-ansible-playbooks

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

同梱ファイル

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

assets/
playbook_template.yml
README.md
validation_rules.yml
references/
README.md
scripts/
README.md
secure_playbook.py
test_playbook.sh
validate_playbook.py

詳細

Ansible Playbook の作成

概要

インフラストラクチャ自動化向けに、本番環境で使用できる Ansible playbook、ロール、インベントリを生成します。SSH ベースのエージェントレス自動化を使用して、サーバーのプロビジョニング、アプリケーションのデプロイ、サービスの設定、マシン群全体にわたる望ましい状態の適用に対応します。

前提条件

  • Ansible 2.14+ がインストールされていること(ansible --version)
  • ターゲットホストへの SSH アクセスと、鍵ベースの認証
  • 制御ノードと管理対象ノードに Python 3.9+ がインストールされていること
  • ターゲットホストのインベントリ(IP アドレスまたはホスト名)
  • システムレベルのリソースを設定する場合は、権限昇格用の認証情報(sudo)
  • playbook の検証用に ansible-lint がインストールされていること

手順

  1. プロジェクト内の既存の Ansible ファイル(ansible.cfg、inventory/、roles/、group_vars/)を確認し、現在の構成を把握します
  2. 自動化の対象(サーバーのプロビジョニング、アプリケーションのデプロイ、構成管理、セキュリティ強化)を決定します
  3. 適切な構成(hosts、become、vars、tasks、handlers)で playbook の YAML を作成します
  4. 標準的なディレクトリ構成(tasks/、handlers/、templates/、defaults/、vars/、meta/)を使用して、再利用可能なロジックをロールに切り出します
  5. 環境固有の値を group_vars/ と host_vars/ に定義し、シークレットは vault で暗号化したファイルに保存します
  6. 環境によって異なる構成ファイルには Jinja2 テンプレートを使用します
  7. 構成変更を契機にサービスを再起動するハンドラーを追加します
  8. ansible-lint と ansible-playbook --check --diff(ドライラン)で playbook を検証します
  9. playbook を 2 回実行し、2 回目に変更がないことを確認して、冪等性をテストします

出力

  • タスク、ハンドラー、変数を構造化した Ansible playbook(.yml)
  • Ansible Galaxy の構成に従ったロールディレクトリ
  • 動的な構成ファイル用の Jinja2 テンプレート(.j2)
  • ホストグループを含むインベントリファイル(INI または YAML)
  • 環境を分離するための group_vars/ と host_vars/
  • 接続と権限昇格の設定を含む ansible.cfg

エラー処理

エラー原因解決策
unreachable: Failed to connect to hostSSH 接続の失敗、またはホスト/ポートの誤りSSH キー、ホストの IP アドレス、ポート 22 が開いていることを ansible -m ping で確認します
become 時の permission deniedsudo パスワードがない、または正しくない--ask-become-pass を追加するか、vault に ansible_become_password を設定します
undefined variable変数が vars、defaults、インベントリのいずれにも定義されていない変数の優先順位を確認し、defaults/main.yml または group_vars/ に定義します
ansible-lint: syntax-check failedYAML 構文エラー、または非推奨モジュールの使用ansible-lint -v を実行して報告された問題を修正し、非推奨モジュールを置き換えます
毎回の実行で changed になる(冪等性がない)creates/removes によるガードなしで command/shell を使用しているcreates: パラメーターを追加するか、目的に特化したモジュール(copy、template、file)に切り替えます

例

  • 「Nginx、Certbot、ポート 80/443 のみを許可するファイアウォールを備えた Ubuntu 22.04 サーバーをプロビジョニングする Ansible playbook を作成してください。」
  • 「Gunicorn、systemd サービスファイル、ログローテーションを使って Python Flask アプリをデプロイするロールを生成してください。」
  • 「すべてのサーバーの SSH 設定を強化する Ansible playbook を作成してください。root ログインを無効にし、鍵認証を必須にし、アイドルタイムアウトを設定します。」

リソース

コメント