AWX を Docker環境で活用する #1
はじめに
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コマンドでしかできない為、注意が必要です。
Discussion