💬

AWX を Docker環境で活用する #1

2023/02/24に公開

はじめに

AWXはかつてAnsible Towerと呼ばれていた物です。
近年ではサポート付きの物はAnsible Automation Platform、Community版はAWXと名称を変え、機能等も大幅に強化されています。

しかし、その一方でAWXのデプロイではkubernetesを基本とするなど、導入の敷居も高くなってしまいました。
開発者向けにDocker(docker-compose)で使う方法も記載されていますが、Docker版はあくまで開発用途であるため、単一ホスト上での運用となってしまいます。

従って、ここではDocker版でも複数ホストで運用できるようなモデルを構築し、そのまま本番運用してしまおうという事を目指します。

AWXのコンテナイメージ作成

AWXを単にインストールするだけならばAWXにおけるインストールガイドにrun in Dockerに従って行うだけで起動まで行えます。

この時にdocker-compose.ymlが作成されるため、一度セットアップが完了すればそれ以降はdocker-compose(docker compose)コマンドでAWXを起動することができます。
このコンテナイメージをcontainer registryに登録しておけば他ホストでも展開することが可能です。

しかしながら、docker-compose.ymlを見てみると以下の通り、awxのコード全体を後からマウントしています。

    volumes:
      - "../../../:/awx_devel"

これでは、せっかくdocker-compose.ymlを作り、コンテナイメージをcontainer registryに登録しても
結局AWXのコードをダウンロードせざるを得ない事になります。
従ってまずはこれを回避します。

AWX 本体のコンテナの作成

ここのbuilderフォルダにそれぞれDockerfileをおいた他、ビルド済みのコンテナイメージも置いてあるので活用してください。

AWX 起動ファイルの作成

AWX セットアップ用のdocker-compose.ymlも同様にこちらに置いています。
使い方などはrepoのREADMEを参照してください。

AWX デプロイ

awx-deploy repoの READMEにデプロイ方法を記載しているのでそちらに従ってdocker-composeを起動する。
ただし、そのまま起動しただけではAWXのコントローラのみしかインスタンスに登録されない為、手動でインスタンスの追加とpeerの追加を行います。
特にインスタンスの追加はDocker版ではawx-manageコマンドでしかできない為、注意が必要です。

GitHubで編集を提案

Discussion