はじめに
前回の記事ではONTAP管理用の実行環境(Execution Environment)の作成について記載しましたが、本記事では構築した実行環境を活用し、ONTAP管理用のPlaybookを利用する手順について記載致します。
何をしたい?できる?
- AWX上でDockerにPushした実行環境をpullする
- AWX上でPullした実行環境を使ってONTAP向けPlaybookの実行
記事における環境情報
本記事では、以下の環境で実施した内容となります。
分かり易くするために、構成図は単純化しています。
AlmaLinux: 10.0
K3s : k3s-selinux 1.6-1.el9
Kustomize Version: v5.5.0
AWX Operator: 2.19.1

AWXにおけるPlaybookの実行について
AWXでは前提としてAnsible Playbookを実行する際の設定をテンプレートとするJob Templateの概念を中心に展開されるような形をとっており、これによりPlaybookを実行する際のパラメータや環境を簡単に再利用できるようになります。
Job Templateの構成要素は以下の通りで、手順では構成要素の設定から実施する形になります。
- Job実行するInventory
- デバイスにログインするためのCredential(本記事の内容では不要)
- Ansible Playbookを含むProject
- Project内のPlaybookが実行される実行環境(Execution Environment)

設定手順
1. Inventory登録
AWXで操作する管理対象を登録します。
Playbook実行に関係する機器の登録を実施する事になりますが、ONTAP操作の場合は直接実行コードを配布しない為、操作対象がAWX自身となります。
グループの作成は必要に応じて実行します。
実際には作成したInventoryにAWXの外部IPをhostへ追加しなくても、Playbookのhosts記載をlocalhostとすることで動作させる事ができます。
(この手順例ではダミーのInventoryを登録するような形)

1-1. AWX上でInventory追加
AWXにログイン後、[リソース]の[インベントリー]を選択し、中央に表示された画面で[追加]から[インベントリーの追加]を選択します。

表示された画面で、インベントリー名を記載し、画面下方の[保存]をクリックします。
この記事の例では、AWX自体のhost登録はしない形で進めます。
(器としてのInventoryの作成のみ)

2. 実行環境の追加
前回の記事では、DockerHubにONTAP用の実行環境を登録したので、本記事のAWX上に於ける実行環境の追加でもDockerHubを指定します。

DockerHub上では以下のような形で実行環境はPush済です。

2-1. AWX上で実行環境追加
[管理]の[実行環境]を選択し、中央に表示された画面で[追加]を選択します。

表示された画面で、DockerHubに登録されたONTAP管理用の実行環境を指定します。
本記事例ではDockerHubのpublic(公開)レポジトリに実行環境を置いているので、認証は不要となり、以下のようにDockerHub上のイメージを指定します。
docker.io/"Docker ID"/ansible-ee:stream9-custom-v2
また、イメージが無い場合のみpullするように指定しています。

3. Projectの追加
Ansible Playbook置き場を定義します。
ソースコントロール(Playbookのある場所)をGitリポジトリにあるPlaybookを指定することもできますが、本記事では手動(AWX上のローカル領域)を指定して進めます。

手動(ローカル領域)を利用するには、過去の記事にあるPersistentVolume設定が必要となります。
3-1. AWX上でProjectの追加
[リソース]の[プロジェクト]を選択し、中央に表示された画面で[追加]を選択します。
表示された画面で必要情報の記載・選択を実施します。
実行環境は上記でONTAP用に登録したものを指定し、ソースコントロールは手動を指定します。
ソースコントロールを手動指定した際のAlma Linux上では以下のようになってます。
(AWXの/var/lib/awx/projectsのmount先)
# AWXのmount元となるディレクトリの確認
$ pwd
/home/user100/awx_work/task01
$ ls
svm_vol_info.yaml
# 置いてあるPlaybookの確認
$ cat svm_vol_info.yaml
---
- name: ONTAP Info
hosts: localhost
collections: netapp.ontap
gather_facts: no
become: no
vars:
ansible_python_interpreter: /usr/bin/python3
tasks:
- name: run ONTAP gather facts for vserver info
na_ontap_rest_info:
username: "{{ svm_user }}"
password: "{{ svm_password }}"
hostname: "{{ svm_host }}"
https: true
validate_certs: false
use_rest: Always
fields:
- '*'
gather_subset:
- storage/volumes
register: volume_info
- name: Display Volume Information
debug:
msg: "{{ volume_info.ontap_info['storage/volumes'].records | list }}"
4. Job Templateの追加
登録しておいたインベントリ、プロジェクトや実行環境を指定します。
併せて、指定したProjectにあるPlaybookの指定を行います。

4-1. AWX上テンプレートの追加
[リソース]の[テンプレート]を選択し、中央に表示された画面の[追加]から[新規ジョブテンプレートの追加]を選択します。
表示された画面で必要情報の記載・選択を実施します。
本記事では、Playbookで使用している変数に入力する値についてはここで指定します。
(SVMのIPやアカウント情報)
5. Job Templateの実行
登録したテンプレートを実行します。
[リソース]の[テンプレート]を選択し、作成したONTAP用のテンプレートの起動を選択します。

参考及びリンク
GUI版のAnsible(AWX)使ってStorage(ONTAP)を管理する1【AlmaLinuxへAWX Install編】
GUI版のAnsible(AWX)使ってStorage(ONTAP)を管理する2【Ansible Builderで実行環境の作成】