どうも、Tです。
先日、AWXをデプロイし使えるようにしたのですが、この中で使われているAnsibleバージョンは何が使われているのか?と疑問に思ったので調べてみました。
環境
AWX
24.6.1
結論
先に確認した結論を書いてしまうと下記でした。
また、AWXのバージョンが同じであってもデプロイのタイミングにって、ansible-coreのバージョンが異なってくる可能性がありそうです。
前提知識
Execution Environmentsについて
まずAWXでPlaybookを実行するときは、ホストOSに導入されたAnsibleではなく、Execution Environments(Ansibleの実行環境)で行われます。
AWX管理画面の「実行環境」画面から、どのコンテナイメージが使われているか確認できます。このコンテナは、EEコンテナやAWX-EEコンテナなどと呼ばれているようです。
なお、上記のURLのリンクにもある通り、EEコンテナの中で実行されるAnsibleは、フルパッケージのansibleではなく、ansible-coreが使用されています。
非公式情報ではありますが、下記がansibleとansible-coreの違いについてわかりやすく掲載されていました。
ちなみに、ansibleとansible-coreのバージョンは一致していないようで、リリースサイクルなども複雑に入り組んでいました…。
AWXデプロイ時のEEについて
AWXをデプロイするとEEコンテナが存在していますが、このEEコンテナがPalybookの実行をしているわけではありません。
少し確認しておきます。
awx-taskというpodがあります。
# kubectl get pods --namespace=awx NAME READY STATUS RESTARTS AGE awx-operator-controller-manager-58b7c97f4b-mgjnv 2/2 Running 2 (4h45m ago) 2d17h k-awx-migration-24.6.1-kwdqp 0/1 Completed 0 2d17h k-awx-postgres-15-0 1/1 Running 1 (4h45m ago) 2d17h k-awx-task-c88bb7576-98tbh 4/4 Running 4 (4h45m ago) 2d17h k-awx-web-8fc77c4b8-rzcpl 3/3 Running 3 (4h45m ago) 2d17h
このpodの中にEEコンテナが存在します。
# kubectl describe pod k-awx-task-c88bb7576-98tbh --namespace=awx --割愛-- k-awx-ee: Container ID: containerd://1a399df633dd80e2cdc9035f70dfcdfd27f07d192b8bd6a0cfda5d48b6f39444 Image: quay.io/ansible/awx-ee:24.6.1 Image ID: quay.io/ansible/awx-ee@sha256:89593d2a0268acacdbd1c075d8810ab50d961cf7769e36de19219bb6cb4efcc1 --割愛--
このEEコンテナは、おそらくですが下記の「Control Plane Execution Environmen」に該当すると思われます。
明確な資料は見つかりませんでしたが、自分で作成したPlaybookを実行すると、そのPalybookを処理する一時的なpodが作成されその中にEEコンテナが含まれる動作のようです。Playbookの処理が終わると一時的なpodは削除されます。
下記の情報もあったのでご参考までに。
What's AWX EE real usage to run ansible playbook?
byu/freetimetime inansible
困ったこと
前提知識からAWXに含まれるEEコンテナの中のansible-coreバージョンを調べればよいことはわかりました。
ansible-coreのバージョン一覧について下記に公開されています。
しかし、AWXのEEコンテナがどのansible-coreを使っているのかはドキュメントなどを探しても見つかりませんでした。
下記のような情報もあるためドキュメントなどから確認するのは難しそうでした。
というわけで、実際に動いている環境から確認するしかないという結論になったため確認してみます。
AWXからPlaybooxを実行して確認する
下記のPlaybookを準備し、EEコンテナに対して実行する方法です。
PlaybookはEEコンテナの中で実行されているのでlocalhostを指定することによりEEコンテナに対してPalybookの処理が実行されます。
- hosts: localhost gather_facts: true tasks: - name: Show ansible version debug: var: ansible_version.full
下記のようなジョブテンプレートを準備し、Playbookを指定し、実行環境に「AWX EE (24.6.1)」を指定して実行します。
ansibleバージョンの結果が得られます。
lastestのEEコンテナのansbileバージョンを確認したい場合は、実行環境を変更して実施することで確認が行えます。
まとめ
このあたりドキュメントに明確な記載がないので理解が難しい…めっちゃ時間かかった…。