Red Hat Ansible Automation Platform のクリエイターガイド
Ansible を使用して自動化コンテンツを作成する方法を学ぶ
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
このドキュメントの改善に関するご意見がある場合や、エラーを発見した場合は、https://access.redhat.com から Technical Support チームに連絡してください。
第1章 はじめに リンクのコピーリンクがクリップボードにコピーされました!
自動化実行環境を使用した Red Hat Ansible Automation Platform 内のコンテンツの自動化
実行環境は、再現可能で、移植可能で、一貫性があり、共有可能なコンテナーイメージとして使用できます。Ansible Automation Platform ジョブのランタイム環境のすべての依存関係を、システムの依存関係、Python の依存関係、Ansible のバージョン、コレクションの形式で Ansible のコンテンツから制御します。
第2章 コンテンツクリエイターのワークフローおよび自動化実行環境の概要 リンクのコピーリンクがクリップボードにコピーされました!
2.1. コンテンツワークフローについて リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Ansible Automation Platform 2.0 より前のバージョンでは、自動化コンテンツ開発者は非常に多くの Python 仮想環境を必要としていたため、それを管理するために独自の自動化が必要でした。このレベルの複雑性を軽減するため、Ansible Automation Platform 2.0 は仮想環境から離れ、代わりに自動化実行環境と呼ばれるコンテナーを使用しています。コンテナーは構築と管理が簡単で、チーム間や組織間での共有が容易になります。
Automation Controller が自動化実行環境の使用に移行するにつれて、Automation Content Navigator や Ansible Builder などのツールを使用すると、このような自動化実行環境を独自の開発システム内でローカルに利用できるようになります。
2.2. アーキテクチャーの概要 リンクのコピーリンクがクリップボードにコピーされました!
次の一覧は、Ansible Automation Platform 2.0 で利用可能なツールの配置と使用、およびその使用方法を示しています。
- Automation Content Navigator だけが、現在 Ansible Automation Platform 1.2 で使用できます。
- Automation Content Navigator と、ダウンロードした自動化実行環境は、ラップトップまたはワークステーションで直接使用されます。
- Automation Content Navigator、ダウンロードされた自動化実行環境、および Automation Controller をローカルからリモートにプッシュまたは実行します。
- Automation Content Navigator、Automation Controller、Ansible Builder、およびレイヤー化されたカスタム EE は、自動化ジョブの実行方法に使用されるコンテンツをさらに細かく制御できます
第3章 Ansible の概念について リンクのコピーリンクがクリップボードにコピーされました!
自動化開発者は、以下の Ansible の概念を確認し、Ansible 開発プロジェクトの開始前に、成功した Ansible Playbook と自動化実行環境を作成します。
3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Ansible がインストールされている。Ansible のインストールに関する情報は、Ansible ドキュメントの Ansible のインストール を参照してください。
3.2. Ansible Playbook について リンクのコピーリンクがクリップボードにコピーされました!
Playbook は、特定の人間が判読可能な命令 (“plays”) のセットを含む YAML で書かれたファイルです。これには、単一ターゲットまたはターゲットグループで実行するように送信されます。
Playbook を使用して、リモートマシンの設定とデプロイメントを管理したり、ローリング更新を含む多層ロールアウトを順序付けたりすることができます。Playbook を使用して、アクションを他のホストに委譲し、途中で監視サーバーやロードバランサーと対話します。作成した Playbook は、自動化のために企業全体で繰り返し使用できます。
3.3. Ansible ロールについて リンクのコピーリンクがクリップボードにコピーされました!
ロールは、自動化コンテンツをバンドルするだけでなく、既知のファイル構造を利用して関連する変数、ファイル、タスク、ハンドラー、およびその他のアーティファクトを自動的にロードする Ansible の方法です。何百ものタスクで巨大な Playbook を作成する代わりに、ロールを使用して、タスクをより小さく、より個別の作業単位に分割することができます。
インフラストラクチャーのプロビジョニング、アプリケーションのデプロイ、および Ansible Galaxy で各タスクを実行するすべてのタスクにロールがあります。Type で検索にフィルターを設定し、Role を選択します。対象のロールを見つけたら、Ansible に同梱されている ansible-galaxy コマンドを使用してダウンロードできます。
ansible-galaxy role install username.rolename
$ ansible-galaxy role install username.rolename
3.4. コンテンツコレクションについて リンクのコピーリンクがクリップボードにコピーされました!
Ansible Content Collection は、自動化用の使いやすいツールキットです。Playbook、ロール、モジュール、プラグインなど、さまざまな種類のコンテンツがすべて 1 カ所にまとめられています。次の図はコレクションの基本構造を示しています。
Red Hat Ansible Automation Platform では、Automation Hub は、Ansible 認定コンテンツコレクションのソースとして機能します。
3.5. 実行環境について リンクのコピーリンクがクリップボードにコピーされました!
自動化実行環境は、Ansible コントロールノードとして機能する一貫性のある共有可能なコンテナーイメージです。自動化実行環境は、外部の依存関係のある Ansible コンテンツを共有する際の課題を軽減します。
自動化実行環境には、以下が含まれます。
- Ansible Core
- Ansible Runner
- Ansible コレクション
- Python ライブラリー
- システムの依存関係
- カスタムのユーザーニーズ
Ansible Builder を使用して自動化実行環境を定義および作成できます。
第4章 ツールおよびコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
自動化実行環境の作成に使用する Red Hat Ansible Automation Platform ツールとコンポーネントの詳細をご覧ください。
4.1. Ansible Builder について リンクのコピーリンクがクリップボードにコピーされました!
Ansible Builder は、さまざまな Ansible Collection で定義されたメタデータ、またはユーザーが定義したメタデータを使用して、自動化実行環境を構築するプロセスを自動化するコマンドラインツールです。
Ansible Builder が開発される前に、Red Hat Ansible Automation Platform ユーザーは、必要なすべての依存関係がインストールされているカスタムの仮想環境またはコンテナーの作成時に、依存関係の問題およびエラーを実行することができました。
Ansible Builder を使用すると、コレクション、サードパーティーの Python 要件、システムレベルパッケージなど、自動化実行環境に含めるコンテンツを指定する、カスタマイズ可能な自動化実行環境定義ファイルを簡単に作成できます。これにより、ジョブの実行に必要な要件と依存関係をすべて満たすことができます。
Red Hat は現在、自動化の実行環境を構築する際に独自のコンテナーイメージを提供することを選択したユーザーをサポートしていません。
4.3. Automation Hub について リンクのコピーリンクがクリップボードにコピーされました!
Automation Hub は、Red Hat サブスクリプションをお持ちのお客様が、Red Hat および弊社のテクノロジーパートナーがサポートするコンテンツをすばやく見つけて使用できる場所を提供し、最も要求の厳しい環境にさらなる安心を提供します。
大まかには、Automation Hub はプログラムに参加し認定されサポートされるコンテンツを提供する全パートナーの概要を説明します。
中央のビューから、ユーザーは各パートナーをより深く掘り下げ、コレクションをチェックアウトできます。
さらに、利用可能なすべてのコレクションの検索可能な概要が利用可能です。
4.4. Ansible コマンドラインインターフェイスについて リンクのコピーリンクがクリップボードにコピーされました!
頻繁に繰り返さないタスクの実行には、コマンドラインで Ansible を使用すると便利です。繰り返しタスクの処理には、Playbook を作成することが推奨されます。
コマンドラインにおける Ansible 用のアドホックコマンドには、以下の構造が適用されます。
ansible [pattern] -m [module] -a "[module options]"
$ ansible [pattern] -m [module] -a "[module options]"
第5章 開発環境の設定 リンクのコピーリンクがクリップボードにコピーされました!
このセクションの手順に従って、自動化実行環境を作成するための開発環境をセットアップできます。
5.1. Ansible Builder のインストール リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- Podman コンテナーランタイムがインストールされている。
-
ホストに有効なサブスクリプションがアタッチされている。これにより、
ansible-builderのインストールに必要なサブスクリプションのみのリソースにアクセスでき、ansible-builderに必要なリポジトリーが自動的に有効化されるようになります。詳細は、Red Hat Ansible Automation Platform サブスクリプションのアタッチ を参照してください。
手順
ターミナルで次のコマンドを実行して、Ansible Automation Platform リポジトリーをアクティブ化します。
dnf install --enablerepo=ansible-automation-platform-2.4-for-rhel-9-x86_64-rpms ansible-builder
# dnf install --enablerepo=ansible-automation-platform-2.4-for-rhel-9-x86_64-rpms ansible-builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. ベース自動化実行環境のダウンロード リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform 2.0 に同梱されるベースイメージは、Red Hat Ecosystem Catalog (registry.redhat.io) にホストされているものです。
前提条件
- 有効な Red Hat Ansible Automation Platform サブスクリプションがある。
手順
registry.redhat.io にログインします。
podman login registry.redhat.io
$ podman login registry.redhat.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow レジストリーからベースイメージをプルします。
podman pull registry.redhat.io/aap/<image name>
$ podman pull registry.redhat.io/aap/<image name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第6章 コンテンツの作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Ansible Automation Platform で使用するコンテンツの開発に関する詳細は、クリエイターガイド でこのセクションに関するガイドラインを参照してしてください。
6.1. Playbook の作成 リンクのコピーリンクがクリップボードにコピーされました!
Playbook には、1 つ以上のプレイが含まれます。基本的なプレイには以下のセクションが含まれます。
- Name: Playbook の全体的な機能について簡単に説明し、全ユーザーに対して読み取り可能かつ整理された状態を維持するのに役立ちます。
- Hosts: Ansible が実行するターゲットを特定します。
-
become ステートメント: この任意のステートメントは、become プラグイン (例:
sudo、su、pfexec、doas、pbrun、dzdo、ksu) を使用して権限のエスカレーションを有効にするためにtrue/yesに設定できます。 - tasks: これは、プレイの各ホストに対して実行されるアクションのリストです。
Playbook の例
6.2. コレクションの作成 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Galaxy CLI ツールを使用して、独自のコレクションをローカルで作成できます。collection サブコマンドを使用すると、Collection 固有のコマンドをアクティブ化できます。
前提条件
- 開発環境に Ansible バージョン 2.15 以降がインストールされている。
手順
- ターミナルで、名前空間のルートディレクトリーを配置する場所に移動します。分かりやすくするため、これは COLLECTIONS_PATH のパスにすることが推奨されますが、必須ではありません。
次のコマンドを実行します。
my_namespaceとmy_collection_nameは、独自の値に置き換えます。ansible-galaxy collection init <my_namespace>.<my_collection_name>
$ ansible-galaxy collection init <my_namespace>.<my_collection_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記名前空間にアップロードするための適切な権限があることを、galaxy.ansible.com または console.redhat.com/ansible/automation-hub の My Content タブで確認してください。
上記のコマンドは、名前空間引数から命名されたディレクトリー (まだ存在しない場合) を作成し、その下に Collection 名を持つディレクトリーを作成します。そのディレクトリー内では、デフォルトまたはスケルトン Collection になります。ここでは、ロールまたはプラグインを追加し、独自の Collection 開発に取り掛かることができます。
実行環境に関連して、Collection 開発者は Ansible Builder で適切なメタデータを指定することで、コンテンツの要件を宣言できます。
Collection からの要件は、以下の方法で認識できます。
-
ファイル
meta/execution-environment.yml。Python またはbindep要件ファイルを参照するファイルです。 -
requirements.txtという名前のファイル。Python の依存関係に関する情報を含んでおり、Collection のルートレベルに存在する場合があります。 -
bindep.txtという名前のファイル。システムレベルの依存関係を含んでおり、Collection のルートレベルに存在する場合があります。 -
これらのファイルのいずれかが Collection の
build_ignoreにある場合、Ansible Builder はそのファイルを検出しません。build_ignoreセクションは、ビルドアーティファクトに含めるべきではないファイルまたはディレクトリーをフィルタリングします。
コレクションのメンテナーは、introspect コマンドを使用して、期待される要件を ansible-builder が認識していることを確認できます。
ansible-builder introspect --sanitize ~/.ansible/collections/
$ ansible-builder introspect --sanitize ~/.ansible/collections/
6.3. ロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Galaxy CLI ツールを使用してロールを作成できます。roles サブコマンドからロール固有のコマンドにアクセスできます。
ansible-galaxy role init <role_name>
ansible-galaxy role init <role_name>
Collection 外部のスタンドアロンロールもサポートされますが、Ansible Automation Platform が提供するすべての機能を活用するには、Collection 内に新しいロールを作成してください。
手順
-
ターミナルで、コレクション内の
rolesディレクトリーに移動します。 コレクション内に
role_nameというロールを作成します。ansible-galaxy role init my_role
$ ansible-galaxy role init my_roleCopy to Clipboard Copied! Toggle word wrap Toggle overflow コレクションの
rolesディレクトリー内にmy_roleという名前のロールが追加されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow --role-skeleton引数を使用して、カスタムロールのスケルトンディレクトリーを指定できます。これにより、組織はニーズに合わせて新しいロールの標準化されたテンプレートを作成できます。ansible-galaxy role init my_role --role-skeleton ~/role_skeleton
ansible-galaxy role init my_role --role-skeleton ~/role_skeletonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
これにより ~/role_skeleton の内容を my_role にコピーして、my_role という名前のロールが作成されます。role_skeleton の内容は、ロールディレクトリー内で有効なすべてのファイルまたはフォルダーになります。
6.4. 自動化実行環境の作成 リンクのコピーリンクがクリップボードにコピーされました!
- 自動化実行環境定義ファイルでは、以下を指定します。
- Ansible バージョン
- Python バージョン (デフォルトはシステム Python)
- 必要な Python ライブラリーのセット
- ゼロ以上の Content Collection (任意)
- その特定の Collection の Python 依存関係
環境に Collection のセットを指定する概念は、依存関係を解決し、インストールすることです。Collection 自体は、自動化実行環境を生成するマシンにインストールする必要はありません。
自動化実行環境は、この定義から構築され、コンテナーイメージが作成されます。これらのイメージの作成手順は、Ansible Builder のドキュメントを参照してください。
第7章 既存のコンテンツの移行 リンクのコピーリンクがクリップボードにコピーされました!
以下のセクションで、awx-manage コマンドを使用して、Red Hat Ansible Automation Platform 2.0 および Automation Controller 4.0 にアップグレードした後に、移行プロセスの追加手順を支援する方法を説明します。また、Ansible のバージョン間での移行についても確認してください。
7.1. 仮想環境を自動化実行環境に移行 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Ansible Automation Platform 2.0 および Automation Controller 4.0 にアップグレードしたら、移行プロセスの追加手順について、以下のセクションを使用します。
7.1.1. カスタムの仮想環境の構築 リンクのコピーリンクがクリップボードにコピーされました!
awx-manage コマンドを使用して、Automation Controller インスタンスの仮想環境をリスト表示できます。
手順
自動コントローラーインスタンスに SSH 接続して実行します。
awx-manage list_custom_venvs
$ awx-manage list_custom_venvsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検出された仮想環境のリストが表示されます。
7.1.2. カスタムの仮想環境に関連付けられたオブジェクトの表示 リンクのコピーリンクがクリップボードにコピーされました!
awx-manage コマンドを使用して、カスタムの仮想環境に関連付けられた組織、ジョブ、およびインベントリーソースを表示します。
手順
自動コントローラーインスタンスに SSH 接続して実行します。
awx-manage custom_venv_associations /path/to/venv
$ awx-manage custom_venv_associations /path/to/venvCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連付けられたオブジェクトのリストが表示されます。
7.1.3. エクスポートするカスタムの仮想環境の選択 リンクのコピーリンクがクリップボードにコピーされました!
awx-manage export_custom_venv コマンドを使用して、エクスポートするカスタムの仮想環境を選択します。
手順
自動コントローラーインスタンスに SSH 接続して実行します。
awx-manage export_custom_venv /path/to/venv
$ awx-manage export_custom_venv /path/to/venvCopy to Clipboard Copied! Toggle word wrap Toggle overflow
このコマンドにより、指定した仮想環境に含まれる pip freeze が表示されます。この情報は、Ansible Builder の requirements.txt ファイルにコピーして、新しい自動化実行環境イメージを作成するために使用できます。
awx-manage list_custom_venvs を実行して出力を減らしたときに -q フラグを渡します。
7.2. Ansible Core バージョン間の移行 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Core のバージョン間で移行するには、Playbook、プラグイン、その他の Ansible インフラストラクチャーの他の部分を更新して、最新バージョンで機能するようにする必要があります。このプロセスでは、変更が Ansible Core の連続する各バージョンに対して行われる更新に対して検証されている必要があります。以前のバージョンの Ansible から Ansible-core 2.15 に移行する場合は、まず、現在のバージョン以降の Ansible バージョンの要件を満たしていることを確認し、そこから 2.15 に、バージョンを順に更新する必要があります。
7.2.1. Ansible 移植ガイド リンクのコピーリンクがクリップボードにコピーされました!
Ansible 移植ガイド は、連続する Ansible バージョン間での動作変更に関する情報を提供する一連のドキュメントです。Ansible のバージョンから新しいバージョンに移行する場合は、ガイドを参照してください。
第9章 まとめ リンクのコピーリンクがクリップボードにコピーされました!
これで、特定の自動化のニーズに対応する自動化実行環境をカスタマイズし、コンテナーレジストリーで共有し、使用できるようになりました。