AWXで使われているansbileバージョンを確認してみた

どうも、Tです。

先日、AWXをデプロイし使えるようにしたのですが、この中で使われているAnsibleバージョンは何が使われているのか?と疑問に思ったので調べてみました。

Oracle Linux9(RHEL9互換)にAWXをデプロイしてみた
どうも、Tです。 AWXのデプロイ手順を確認できたので備忘録です。 前置きがかなり長いので、インストールだけしたい方は「Or...

スポンサーリンク
アドセンス1

環境

AWX

24.6.1

結論

先に確認した結論を書いてしまうと下記でした。

latestの方は実行時に新しいEEがあればより新しいものになります。
また、AWXのバージョンが同じであってもデプロイのタイミングにって、ansible-coreのバージョンが異なってくる可能性がありそうです。

前提知識

Execution Environmentsについて

まずAWXでPlaybookを実行するときは、ホストOSに導入されたAnsibleではなく、Execution Environments(Ansibleの実行環境)で行われます。

Getting started with Execution Environments — Ansible Community Documentation
14. Execution Environments — Ansible AWX community documentation

AWX管理画面の「実行環境」画面から、どのコンテナイメージが使われているか確認できます。このコンテナは、EEコンテナやAWX-EEコンテナなどと呼ばれているようです。

 EEコンテナのバージョンは、AWXと同じになっていましたが固定というわけでなく異なるバージョンのEEコンテナを使えるようです。本記事の目的とずれるので割愛します。

なお、上記のURLのリンクにもある通り、EEコンテナの中で実行されるAnsibleは、フルパッケージのansibleではなく、ansible-coreが使用されています。

非公式情報ではありますが、下記がansibleとansible-coreの違いについてわかりやすく掲載されていました。

Ansible vs Ansible Core - GeeksforGeeks
Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and progr...

ちなみに、ansibleとansible-coreのバージョンは一致していないようで、リリースサイクルなども複雑に入り組んでいました…。

Releases and maintenance — Ansible Community Documentation

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のバージョン一覧について下記に公開されています。

ansible-core Roadmaps — Ansible Community Documentation

しかし、AWXのEEコンテナがどのansible-coreを使っているのかはドキュメントなどを探しても見つかりませんでした。

下記のような情報もあるためドキュメントなどから確認するのは難しそうでした。

How to tell what ansible-core version is associated to a awx version?
I have been trying to find a way to determine what version of ansible-core is associated to a specific AWX version. The person who was in charge of handling the...

というわけで、実際に動いている環境から確認するしかないという結論になったため確認してみます。

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バージョンを確認したい場合は、実行環境を変更して実施することで確認が行えます。

まとめ

このあたりドキュメントに明確な記載がないので理解が難しい…めっちゃ時間かかった…。

スポンサーリンク
アドセンス1
アドセンス1
ブログランキング・にほんブログ村へ

シェアする

フォローする