AWX 12.0.0の変更点を確認してみた

先日、AWX の 12.0.0 がリリースされたので、バグフィックスを除いた変更点について確認してみました。

今回は変更内容の深いところまでは踏み込まず、表面的な差分の確認です。余裕があれば細かく調べてみようと思います。(やらないヤツ)

変更点

github.com

公式の CHANGELOG から変更点をピックアップしました(カッコ内はザックリ翻訳です)。 今回はコンテナ周りの変更が多いようです。

  • Removed memcached as a dependency of AWX (memcached の排除
  • Moved to a single container image build instead of separate awx_web and awx_task images. The container image is just awx(AWX用コンテナイメージの統合
  • Official AWX container image builds now use a two-stage container build process that notably reduces the size of our published images(コンテナイメージのビルド方法変更
  • Removed support for HipChat notifications (EoL announcement); all previously-created HipChat notification templates will be deleted due to this removal.(HipChat サポート対象外

memcached の排除

11.2.0 まで使用されていた memcached が使用されなくなったようです。 こちらは 11.2.0 の AWX を起動した状態のコンテナです。

f:id:nnstt1:20200612221416p:plain

そしてこちらが 12.0.0 です。

f:id:nnstt1:20200612215516p:plain

11.2.0 と比較して分かるように、12.0.0 では memcached のコンテナが起動していません。

以前に「memcached が使われなくなって Redis に切り替わる」というのを公式のアナウンスで目にした気がするのですが、しばらく経っても残ったままで疑問に思っていました(目にしたというのが勘違いかもしれません)。今回のアップデートでついに Redis に切り替わったようです。

個人的に、インメモリデータストアの分野がまったく分からないので、今回の変更についてもどのように影響するのか分かっていません。 気が向いたら勉強してみます。(やらないヤツ)

AWX用コンテナイメージの統合

11.2.0 までは「ansible/awx_web」と「ansible/awx_task」の2つのコンテナイメージが使用され、それぞれ「awx_web」「awx_task」という名前でコンテナが起動されていました。

12.0.0 では「ansible/awx」という1つのコンテナイメージに統合されました。 ただ、起動するコンテナは以前と同じく「awx_web」「awx_task」です。 2種類の用途を1つのコンテナイメージから起動できるようにまとめたようです。

こちらは 12.0.0 のコンテナ起動状況の再掲になりますが、「awx_web」と「awx_task」コンテナの "IMAGE" が ansible/awx:12.0.0 になっている(=同じコンテナイメージを使用している)ことが確認できます。

f:id:nnstt1:20200612215516p:plain

また、コンテナを統合したことにより「awx_web」と「awx_task」コンテナの起動方法も若干変わっているようです。

11.2.0 では、「ansible/awx_web」と「ansible/web_task」の各コンテナイメージを作成するための Dockerfile に別々の CMD が指定されて、コンテナ起動時に各シェルスクリプト(launch_awx.sh と launch_awx_task.sh)が実行されていました。

12.0.0では、「ansible/awx」のDockerfile で CMD /usr/bin/launch_awx.sh と指定されているのですが、この Dockerfile で作成されるコンテナイメージは「awx_web」と「awx_task」の両方で使われるため、起動時のコマンド(シェルスクリプト)を分ける必要があります。そのために、docker-compose.yml で「awx_task」コンテナのディレクティブに command: /usr/bin/launch_awx_task.sh が追加されており、起動時のシェルスクリプトを切り替えるようになっています。

「awx_web」は Dockerfile の CMD をそのままコンテナ起動、「awx_task」は docker-compose.yml で CMD を上書きしてコンテナ起動するようです。

コンテナイメージのビルド方法変更

マルチステージビルド という、起動用コンテナとビルド用コンテナを分けたビルド方法に変更されました。使用される Dockerfileこちら

このビルド方法の変更により、「ansible/awx」コンテナイメージのサイズが「ansible/awx_web」や「ansible/awx_task」のコンテナイメージから 約 1GB 削減 されています。正直、この削減が効いてくる場面は少ない気はしますが、ムダにサイズが大きいより良いと思います。

f:id:nnstt1:20200612213631p:plain

HipChat サポート対象外

HipChat という Atlassian のチャットサービスがあったようなのですが、Slackに買収されてサービス終了しているためAWXもサポート対象外ということらしいです。これにより、HipChat 向けの通知テンプレートは自動で削除されるようです。(興味が沸かなかったので調べてません)

おわりに

今回はコンテナ周りの変更がメインで、Ansible/AWX を運用する上での大きな変更点はなかったようです。

AWX のリリースは早いですね。

こちらのじゃがくんをフォローしておけば最速でリリースをお知らせしてくれるので、とても助かりますよ。