Ansible Automation Platform (AAP) アーキテクチャー概要
1. 基本コンポーネントと役割
| コンポーネント | 説明 |
|---|---|
| organizations | ユーザーやリソースを論理的に分離する最上位の管理単位 |
| users | AAPにログイン・操作できる個々のアカウント |
| teams | 同一組織内のユーザーをグループ化し、共通の権限を付与する単位 |
| credential_types | 認証情報のフォーマットや入力項目の型定義 |
| credentials | SSHキー、クラウドAPIキーなど、ジョブ実行に必要な具体的な認証情報(組織に属する) |
| execution_environments | ジョブ実行時のコンテナ化された実行環境(Ansible・Pythonモジュールを含む) |
| projects | Ansible PlaybookやRoleを格納するリソース(Git/SVNなどのSCMと連携可能) |
| inventory | 管理対象ホストの一覧やグループ定義 |
| inventory_sources | 外部ソース(クラウド、SCMなど)からインベントリーを動的取得する設定 |
| notification_templates | ジョブ実行結果をSlack、Email、Webhookなどで通知する設定 |
| job_templates | 実行するPlaybook・Inventory・Credential・Execution Environment・Instance Groupなどを組み合わせたジョブ定義 |
| workflow_job_templates | 複数のジョブテンプレートや分岐条件を組み合わせたワークフロー定義 |
| schedules | ジョブやワークフローの定期実行スケジュール |
| job | 実際に実行されたジョブの履歴と結果 |
2. コンポーネント間の依存関係
以下の図は、各AAPコンポーネントの依存関係を示します。
3. 実行フローの例
- ユーザー(users)が 組織(organizations)に属し、必要に応じて チーム(teams)としてグループ化。
- プロジェクト(projects)にPlaybookやRoleを配置(SCM連携可)。
- インベントリー(inventory)で対象ホストを定義、または インベントリーソース(inventory_sources)で外部から取得。
- 認証情報(credentials)を用意してホスト接続やクラウド操作を可能に。
- ジョブテンプレート(job_templates)で、プロジェクト・インベントリー・認証情報・実行環境を紐づけ。
- 必要に応じて ワークフロージョブテンプレート(workflow_job_templates)でジョブテンプレートを連結。
- スケジュール(schedules)で定期実行、または手動実行。
- 通知テンプレート(notification_templates)で結果を通知。
- 実行されたジョブは job として履歴に記録。
4. まとめ
- organizations が全体のリソースの境界を定義する中核。
- users と teams がアクセス制御を行い、credentials が認証を担う。
- projects・inventory・execution_environments が実行の準備段階を構成。
- job_templates および workflow_job_templates が実際の実行定義。
- schedules と notification_templates が運用面の自動化を支える。