Ansible Tower / AWX / Automation controller Security
基本情報
Ansible Tower またはそのオープンソース版 AWX は Ansibleのユーザーインターフェース、ダッシュボード、およびREST API としても知られています。 役割ベースのアクセス制御、ジョブスケジューリング、およびグラフィカルインベントリ管理により、AnsibleインフラストラクチャをモダンなUIから管理できます。 TowerのREST APIとコマンドラインインターフェースを使用すると、現在のツールやワークフローに簡単に統合できます。
Automation Controller は、より多くの機能を備えた Ansible Tower の新しいバージョンです。
違い
こちら によると、Ansible Tower と AWX の主な違いは、受け取ったサポートと Ansible Tower が役割ベースのアクセス制御、カスタムAPIのサポート、およびユーザー定義のワークフローなどの追加機能を持っていることです。
テックスタック
Webインターフェース: ユーザーがインベントリ、資格情報、テンプレート、およびジョブを管理できるグラフィカルインターフェースです。直感的に設計されており、自動化ジョブの状態と結果を理解するのに役立つ視覚化を提供します。
REST API: Webインターフェースでできることはすべて、REST APIでもできます。これにより、AWX/Towerを他のシステムと統合したり、通常インターフェースで実行するアクションをスクリプト化したりできます。
データベース: AWX/Tower は構成、ジョブ結果、およびその他の必要な運用データを保存するためにデータベース(通常はPostgreSQL)を使用します。
RabbitMQ: これは AWX/Tower が異なるコンポーネント間で通信するために使用するメッセージングシステムです、特にWebサービスとタスクランナー間での通信に使用されます。
Redis: Redis はキャッシュとタスクキューのバックエンドとして機能します。
論理コンポーネント
インベントリ: インベントリは ホスト(またはノード)のコレクションであり、ジョブ(Ansibleプレイブック)を 実行できます。 AWX/Tower では、インベントリを定義してグループ化することができ、AWS、Azureなどの他のシステムからホストリストを取得する 動的インベントリ もサポートしています。
プロジェクト: プロジェクトは、必要なときに最新のプレイブックを取得するために バージョン管理システム(Gitなど)から取得される Ansibleプレイブックのコレクション です。
テンプレート: ジョブテンプレートは、特定のプレイブックがどのように実行されるかを定義し、ジョブのための インベントリ、資格情報、および他の パラメータ を指定します。
資格情報: AWX/Tower は、SSHキー、パスワード、APIトークンなどの シークレットを管理および保存する安全な方法を提供します。これらの資格情報は、プレイブックが実行される際に必要なアクセス権限を持つように、ジョブテンプレートに関連付けることができます。
タスクエンジン: ここで魔法が起こります。タスクエンジンは Ansible に基づいて構築されており、 プレイブックを実行する責任があります。ジョブはタスクエンジンにディスパッチされ、指定されたインベントリを使用して指定された資格情報を使用して Ansible プレイブックを実行します。
スケジューラとコールバック: これらは AWX/Tower の高度な機能で、特定の時間に実行されるジョブをスケジュールしたり、外部イベントによってトリガーされたりすることができます。
通知: AWX/Tower は、ジョブの成功または失敗に基づいて通知を送信できます。メール、Slackメッセージ、Webhookなど、さまざまな手段の通知をサポートしています。
Ansibleプレイブック: Ansibleプレイブックは構成、展開、オーケストレーションツールです。自動化された繰り返し可能な方法でシステムの望ましい状態を記述します。YAMLで記述されたプレイブックは、Ansibleの宣言型自動化言語を使用して、実行する必要のある構成、タスク、およびステップを記述します。
ジョブ実行フロー
ユーザーインタラクション: ユーザーは AWX/Tower と Webインターフェース または REST API を介してやり取りできます。これらは AWX/Tower が提供するすべての機能にフロントエンドアクセスを提供します。
ジョブの開始:
ユーザーは、WebインターフェースまたはAPIを介して、 ジョブテンプレート に基づいてジョブを開始します。
ジョブテンプレートには、 インベントリ、プロジェクト(プレイブックを含む)、および 資格情報 への参照が含まれます。
ジョブ開始時に、ジョブを実行するために AWX/Tower バックエンドにリクエストが送信されます。
ジョブのキューイング:
RabbitMQ は、Webコンポーネントとタスクランナー間のメッセージングを処理します。ジョブが開始されると、RabbitMQ を使用してタスクエンジンにメッセージが送信されます。
Redis は、タスクキューのバックエンドとして機能し、実行を待っているジョブを管理します。
ジョブの実行:
タスクエンジン はキューイングされたジョブを取得します。ジョブに関連するプレイブック、インベントリ、および資格情報に関する必要な情報を データベース から取得します。
関連する プロジェクト から取得した Ansible プレイブックを使用して、タスクエンジンは指定された インベントリ ノードに対して指定された 資格情報 を使用してプレイブックを実行します。
プレイブックが実行されると、その実行結果(ログ、ファクトなど)がキャプチャされ、 データベース に保存されます。
ジョブの結果:
プレイブックの実行が終了すると、結果(成功、失敗、ログ)が データベース に保存されます。
ユーザーは、Webインターフェースを通じて結果を表示したり、REST APIを介してクエリしたりできます。
ジョブの結果に基づいて、ジョブの状態についてユーザーや外部システムに通知するために 通知 が送信されることがあります。通知は、メール、Slackメッセージ、Webhookなどで行われる可能性があります。
外部システムの統合:
インベントリ は外部システムから動的に取得され、AWS、Azure、VMwareなどのソースからホストを取り込むことができます。
プロジェクト(プレイブック)はバージョン管理システムから取得され、ジョブの実行中に最新のプレイブックが使用されることが保証されます。
スケジューラとコールバック を使用して、他のシステムやツールと統合し、AWX/Tower が外部トリガーに反応したり、特定の時間にジョブを実行したりできます。
テスト用のAWXラボの作成
ドキュメントに従う と、docker-compose を使用して AWX を実行できます:
RBAC
サポートされているロール
最も特権のあるロールはシステム管理者と呼ばれます。このロールを持つユーザーは何でも変更できます。
ホワイトボックスセキュリティのレビューから、システム監査役ロールが必要で、これによりすべてのシステムデータを表示できますが、変更はできません。別のオプションとして組織監査役ロールを取得することもできますが、前者を取得する方が良いでしょう。
最終更新