Ansible Automation Platform 2.1 のご紹介 Part1

皆さんこんにちは、Red Hat ソリューションアーキテクトの岡野です。
メインの仕事はパートナーを担当する SA なのですが、『Ansible 大好き』 を公言しているので、関連する仕事は良くやっています。

長らく赤帽エンジニアブログを書いていませんでした、皆様お久しぶりです。(^^)

さて、その大好きな Ansible Automation Platform (以下AAP)の最新版 AAP 2.1 が昨年末にリリースされましたのでご紹介したいと思います。なお、AAP 2.1 の技術詳細に関しては、弊社サポートの凄腕の面々から本ブログを通じで既にご紹介させていただいておりますので、プリセールスの私からはどちらかというと『使い方』にフォーカスした情報をご提供できればと思います。

なお、旧 AAP1.2 (Ansible Tower 3.8) から大きく実装が変わってるため、1度で書ききれません。
このため複数回に分けてご紹介したいと思います。以下の様な内容を今のところ想定しています。
ボリュームによっては 5 回になるかもしれません。♪

  1. コンテナ化された実行環境と automation controller による実行
  2. ansible-navigator を使った実行環境の確認と実行
  3. AAP 2.1 へのアップグレードの考慮点と実行方法
  4. その他(Automation Hub / Automation Meshなど)

※本一連のブログは AAP 1.2 を理解されている方を想定しています、ご了承ください。
 また、ご紹介する機能は、2022年1月31日現在、最新のバイナリバージョンである AAP 2.1.1 を前提にしています。

第1回目は、

『コンテナ化された実行環境と automation controller による実行』

というところをご紹介できればと思います。実行環境は AAP2.1 で大きく実装の変わったところの1つです。
非常に重要なポイントなのでここから始めたいと思います。

AAP 2.1 概要

  • 2021年12月2日にリリース
  • 旧 AAP 1.2 で親しまれていた 『Ansible Tower』 は AAP 2.1 では 『automation controller』 と名称が変更になっています。多機能化されていますが基本的な部分での使い勝手は旧 Ansible Tower と変わりませんのでご心配は無用です。(バージョンなど詳細は下記赤い帽子のリンク先参照)
  • CPU/Memory/OS の要件(抜粋)は下記の表の通りです。
    旧バージョンは 2CPU/4GB でした。また、AAP2.1 ではついにOSが RHEL8 系のみとなっていますので、特に AAP1.2 → 2.1 へのアップグレードを考えている方はご注意ください。表の中の『Control』 とか、『Execution』とかって何?という話はまた後程。それでも気になる方は、まずは Control ≒ 旧 Ansible Tower と思ってください。(^^)
  • ansible のバージョンは、2.9.x → 2.12.x* へ
  • AAP 1.2 (Ansible Tower 3.8) の EOL は 2022年11月18日です!
    AAP1.2をご利用の方はそろそろアップグレードの準備をお願いいたします。(_._)
     
Control/Execution/Hop
Automation Hub
CPU
4 (最小)
2 (最小)
RAM
16GB (最小)
8GB (最小)
OS
Red Hat Enterprise Linux 8.4 or later 64-bit (x86)
Ansible
2.11 required*
-

*マニュアル上は、ansible 2.11 required となっていますが、2022年1月末現在、実行環境には 2.12 が包含されています。
※Disk などその他の要件は、マニュアルをご確認ください。

バージョンやライフサイクルなどは以下ご確認ください。
access.redhat.com

コンテナ化された実行環境
AAP 2.1 の最も大きな変更点は、

『ansible の実行環境がコンテナ化された』

これに尽きると思います。

実行環境がコンテナ化された理由については以下 "Container Runtime for Ansible" をご確認ください。

rheb.hatenablog.com

AAP 1.2 、つまり旧 Ansible Tower 3.8 では新規インストールすると、必要コンポーネントとして、ホストOS に ansible 2.9.x が同時にインストールされますよね。でも、AAP 2.1 の場合、ansible-core はホスト OS にはインストールされません。*

『えええっ! じゃ、どうやって Playbook 実行するんですか??』

って、そうですよね。AAP 2.1 では、ansible-core はホスト OS には直接インストールされず、実行環境 と呼ばれるコンテナ内部のコンポーネントとして提供されます。モジュールや Python の依存関係なども "基本的には" その実行環境の中にパッケージングされ提供されます。

一方、OS 側には、Ansible Runner** がインストールされるのですが、Playbook 実行時にはこの Ansible Runner が実行環境コンテナ内の ansible-core を呼び出して Playbook を実行する、そんな仕組みになっています。Playbook は、ホスト OS の Current Directory に配置されたものをコンテナがボリュームマウントすることで利用します。

ま、細かい実装面や裏の動きは置いておいて、

『AAP 2.1 では、ansible-core はコンテナ化された実行環境の中にある』

ということをまずしっかり押さえておいてください。

*AAP 2.1 インストールには ansible-core が必要です。このためインストーラを実行するするホストには必要に応じて ansible-core がインストールされます。しかしながら AAP 2.1 のジョブ実行としては利用されません。

**Ansible Runner は AAP1.2で v1が実装されていますが、AAP2.1ではv2となりコンテナ化された実行環境対応となっています。

実行環境の入手方法
実行環境はコンテナイメージとして Red Hat Ecosystem Catalog (リポジトリは registry.redhat.io) より提供されます。本ブログ執筆現在、提供されているイメージは以下の 3種類で、それぞれに特徴があります。

1. Ansible Automation Platform supported execution environment
 ansible-automation-platform-21/ee-supported-rhel8

以下のコンポーネントが含まれています。

ansible-core : 2.12
モジュール : Content Collections の中で Supported By が Red Hat になっているものが含まれます。
依存パッケージ : Collections に必要なパッケージ群及び ansible 2.9 環境と同等のパッケージ

"supported" という表記がありますが、AAP 2.1 で標準的に利用されることを想定している実行環境です。
これは AAP 2.1 の制限ではありませんが、ansible-core 2.11 や 2.12 ではコミュニティモジュールは含まれず、約70個のコアモジュールのみが包含されています。この実行環境はそのコアモジュールに Collections の中から Red Hat がサポートする物、約30個を合わせてパッケージングしたものとなっています。旧 AAP 1.2 と互換性の高い ansible 2.9 の実行環境と同等の Python 依存関係も同時にパッケージングされていますが、コミュニティモジュールは含まれていません。

2. Ansible Automation Platform compatibility execution environment
 ansible-automation-platform-21/ee-29-rhel8

ansible : 2.9
モジュール : ansible 2.9 に含まれるモジュール群(3,000+)
依存パッケージ : ansible 2.9 環境で必要とされる Python 依存パッケージも数多く含まれています。

"compatibility" という表記があるとおり、旧 AAP 1.2 環境と互換性の高い実行環境です。旧 AAP 1.2 の環境でモジュールや Python パッケージを特に追加していない場合、既存環境を AAP 2.1 にアップデートするだけで問題なく動作する可能性が高いイメージです。ansible 2.9 ですので将来的にはより新しい、ansible-core バージョンへの移行が必要となってきますが、ansible-core 2.11 への移行期間には強い味方となります。

3. Ansible Automation Platform minimal execution environment
 ansible-automation-platform-21/ee-minimal-rhel8

ansible-core 2.12 をベースとした最低限必要なパッケージ群のみを包含した実行環境のイメージです。実行環境はカスタマイズして作成する事も可能ですが、その際のプレーンなベースイメージとしての利用も想定される実行環境です。

実行環境コンテナを使った Playbook の実行方法
ではそのコンテナ化された実行環境をどうやって使うか、ですが、方法の1つ目として automation controller を使った方法をご説明します。・・・、と言っても、説明する程の事もなく凄く簡単です。♬

実行環境は前記した通り Red Hat Ecosystem Catalog (registry.redhat.io) などのコンテナレジストリーより提供されますが、automation controller のジョブテンプレート内で指定すれば OKです。こんな感じです。

f:id:hokn5:20220201153000p:plain

ここまで指定しておけば、あとはジョブテンプレートを実行するだけでです。実行環境がコンテナであることを意識する必要がありません、簡単でしょ?(^^)

まとめ
今回、AAP 2.1 で大きく変更された ansible の実行環境についてご説明しました。
その環境はコンテナ化されており、その中で、ansible-core が実行される。その実行方法についてもご紹介しました。
次回は、ansible-navigator を使った実行環境の確認と実行についてご紹介する予定です、お楽しみに。♬

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。