はじめに
Ansibleとは効率的な自動化と構成管理を実現するためのツールで、過去の記事でもCLIを介してのStorage(ONTAP)管理操作について紹介してきましたが、本記事では、AnsibleのGUIツールであるAWXを用いたStorage(ONTAP)管理操作について記載します。
GUIツールである利点については以下のような内容が考えられます。
直感的操作
- GUIによる直感的なインターフェースを提供し、マウス操作やドラッグ&ドロップなどの視覚的な操作が可能(初心者でも簡単に利用しやすい)
可視化とモニタリング
- Jobの実行状況や進捗状況を視覚的に確認することができ、タスクの実行ログやエラーメッセージをリアルタイムで表示することで、問題の追跡やトラブルシューティングが容易
- ダッシュボードやグラフなどのモニタリング機能も統合されており、システム状態を一目で把握することが可能
ワークフローの自動化
- タスクの自動化とワークフローの設定を簡素化
- GUI上でタスクを配置し、依存関係や制約を設定することで、複雑なタスクの実行順序や条件を容易に管理
チームコラボレーション
- チームメンバー間でのタスクの共有や編集が容易
- 役割ベースのアクセス制御を提供し、各ユーザーに対して適切な権限を設定することが可能
何をしたい?できる?
- 検証環境としてAWXの用意
- AlmaLinuxへK3sのInstall
- K3s上にAWXの導入
記事における環境情報
本記事では、以下の環境で実施した内容となります。
分かり易くするために、構成図は単純化しています。
ONTAP: 9.16.1
AlmaLinux: 10.0
K3s : k3s-selinux 1.6-1.el9
Kustomize Version: v5.5.0
AWX Operator: 2.19.1
設定手順
AWXをインストールする際には、AWX Operatorを使用してKubernetes環境にデプロイする方法が一般的となります。
AWX Operatorは、AWXをKubernetes環境にデプロイするためのツールで、Kubernetes カスタムリソースのCRD(Custom Resource Definitions)を使用してAWXのインストール、管理、更新を簡素化しています。
本記事ではK3sの環境にAWXの導入を実施します。
| 特徴 | Minikube | K3s | MicroK8s |
|---|---|---|---|
| 動作環境 | Local PC | 小規模デバイスやサーバ | Local PCやサーバ |
| 軽さ | 普通 | IoT向け | 軽いが機能が豊富 |
| 用途 | 学習やテスト | 小規模PJやIoT | 学習、テスト、大規模PJ |
| インストール | 簡単(要VM) | 少し手間 | 1行コマンド |
1. K3sの導入
まずは、赤字/赤枠の部分の作成を実施します
K3sを導入する機器のスペックの要件を満たしている事を確認します。
# OS Versionの確認
> cat /etc/redhat-release
AlmaLinux release 10.0 (Purple Lion)
# CPU数の確認
> lscpu |grep "CPU(s):"
CPU(s): 4
NUMA node0 CPU(s): 0-3
# Memoryの確認
> free -h
total used free shared buff/cache available
Mem: 7.5Gi 1.1Gi 5.3Gi 12Mi 1.4Gi 6.4Gi
Swap: 7.9Gi 0B 7.9Gi
検証環境の為、SELinuxの無効化やFirewallを停止しています
firewalldの無効化やSELinuxを無効化します。
> sudo systemctl disable firewalld --now
[sudo] user100 のパスワード:
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
> cat /etc/selinux/config |grep SELINUX=disabled
# NOTE: In earlier Fedora kernel builds, SELINUX=disabled would also
SELINUX=disabled
K3sのインストールを実施します。
> sudo curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
[INFO] Finding release for channel stable
[INFO] Using v1.32.5+k3s1 as release
[INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.32.5+k3s1/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.32.5+k3s1/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Finding available k3s-selinux versions
Rancher K3s Common (stable) 3.9 kB/s | 1.1 kB 00:00
依存関係が解決しました。
=======================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=======================================================================================================================
インストール:
k3s-selinux noarch 1.6-1.el9 rancher-k3s-common-stable 22 k
依存関係のインストール:
container-selinux noarch 4:2.235.0-2.el10_0 appstream 60 k
トランザクションの概要
=======================================================================================================================
インストール 2 パッケージ
(中略)
完了しました!
[INFO] systemd: Starting k3s
Install状態を確認します。
# Nodeの確認
> kubectl get nodes
NAME STATUS ROLES AGE VERSION
awx100.local Ready control-plane,master 33s v1.32.5+k3s1
# Podの確認
> kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-697968c856-sdvs4 1/1 Running 0 47s
kube-system helm-install-traefik-crd-gc5tt 0/1 Completed 0 47s
kube-system helm-install-traefik-j6csm 0/1 Completed 1 47s
kube-system local-path-provisioner-774c6665dc-g69ff 1/1 Running 0 47s
kube-system metrics-server-6f4c6675d5-lb6qk 1/1 Running 0 47s
kube-system svclb-traefik-7c5fe4da-7f5l6 2/2 Running 0 27s
kube-system traefik-c98fdf6fb-bqb6k 1/1 Running 0 27s
# Versionの確認
> kubectl version
Client Version: v1.32.5+k3s1
Kustomize Version: v5.5.0
Server Version: v1.32.5+k3s1
2. KustomizeのInstall
Kustomizeは、Kubernetesのオブジェクトをカスタマイズするためのツールで、Kubernetesのマニフェストファイル(YAMLファイル)をテンプレート化し、環境ごとに異なる設定を適用することができます。
Kustomize Installにあたってtarが必要となり、AWX Operatorのデプロイ時にgitが必要となるので事前に導入しておきます。
# tarのInstall
> sudo dnf install tar
メタデータの期限切れの最終確認: 0:04:15 前の 2025年06月24日 18時45分00秒 に実施しました。
依存関係が解決しました。
=======================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=======================================================================================================================
インストール:
tar x86_64 2:1.35-7.el10 baseos 866 k
トランザクションの概要
=======================================================================================================================
インストール 1 パッケージ
(中略)
インストール済み:
tar-2:1.35-7.el10.x86_64
完了しました!
# gitのInstall
> sudo dnf install git
メタデータの期限切れの最終確認: 1:18:45 前の 2025年06月25日 00時34分36秒 に実施しました。
依存関係が解決しました。
=======================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=======================================================================================================================
インストール:
git x86_64 2.47.1-2.el10_0 appstream 55 k
依存関係のインストール:
(中略)
perl-podlators-1:5.01-511.el10.noarch perl-vars-1.05-512.1.el10_0.noarch
完了しました!
BinaryをダウンロードしてInstallの手順を確認してKustomizeのInstallを実施します。
# KustomizeのInstall
> curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
v5.6.0
kustomize installed to /home/user100/kustomize
# 権限の変更と、PATHが通っているディレクトリに移動
> sudo chown root.root kustomize
> sudo mv kustomize /usr/local/bin/
# Versionの確認
> kubectl version
Client Version: v1.32.5+k3s1
Kustomize Version: v5.5.0
Server Version: v1.32.5+k3s1
3. AWX OperatorのInstall
AWXのデプロイを管理するツールであるAWX OperatorのInstallを実施します。
下図の赤枠部分の作成の為の前準備に近いイメージとなり、kustomization.yamlの作成とマニュフェスト適用を実施する事になります。
kustomization.yamlはKustomizeの中心的な設定ファイルで、Kubernetesのリソースをどのようにカスタマイズするかを定義します。本記事ではkustomization.yamlに、awx-operatorのバージョンを指定します。
AWX Operatorについては 予めReleases ページで最新のバージョンを確認しておきます。
以下の項目について記載したkustomization.yamlを作成します
- resources:管理するKubernetesリソースのファイルを指定
- images:イメージのタグやリポジトリを変更
- namespace:リソースに対して指定した名前空間が適用
> cat kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
# 管理するリソースを指定
resources:
- github.com/ansible/awx-operator/config/default?ref=2.19.1
# イメージのタグを変更
images:
- name: quay.io/ansible/awx-operator
newTag: 2.19.1
namespace: awx01
kustomization.yaml を基にリソース定義を生成し、K3sクラスタに適用します。(デプロイ)
> kustomize build . | kubectl apply -f -
namespace/awx01 created
customresourcedefinition.apiextensions.k8s.io/awxbackups.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxmeshingresses.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxrestores.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxs.awx.ansible.com created
(中略)
configmap/awx-operator-awx-manager-config created
service/awx-operator-controller-manager-metrics-service created
deployment.apps/awx-operator-controller-manager created
# 定義された名前空間の確認
$ kubectl get pods -n awx01
NAME READY STATUS RESTARTS AGE
awx-operator-controller-manager-58b7c97f4b-w4fxp 2/2 Running 0 83s
4. AWXのインストール
kustomization.yamlを修正し、AWXリソースの作成を実施します。
実施にあたって、AlmaLinux上で作成したPlaybookをAWXから利用できるように、PersistentVolume設定も追加します。
(検証環境なのでGitHub使わないで楽を出来るようにしたい)
- kustomization.yamlにawx-demo.yaml等のリソース追加
- awx-demo.yaml, pv.yaml, pvc.yamlの作成
- Host上のディレクトリをAWXにmountさせるPersistentVolume設定を追加
4-1. AWXリソース用ファイルの修正及び作成
AWXのコンテナにmountさせるディレクトリを用意します。
> mkdir awx_work
> cd awx_work
> pwd
/home/user100/awx_work
AWXリソース作成のサンプルはawx-operator/awx-demo.ymlから確認できます。
修正及び作成するファイルは以下の通りです。
本記事ではAWXへのアクセスするためのPort番号は30080にしています。
> cat kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
# 管理するリソースを指定
resources:
- github.com/ansible/awx-operator/config/default?ref=2.19.1
- awx-demo.yaml
- pv.yaml
- pvc.yaml
# イメージのタグを変更
images:
- name: quay.io/ansible/awx-operator
newTag: 2.19.1
namespace: awx01
> cat awx-demo.yaml
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx-demo
spec:
service_type: nodeport
nodeport_port: 30080
projects_persistence: true
projects_existing_claim: awx-projects-claim
> cat pv.yaml
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: awx-projects-volume
spec:
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
capacity:
storage: 2Gi
storageClassName: awx-projects-volume
hostPath:
path: /home/user100/awx_work
> cat pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: awx-projects-claim
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 2Gi
storageClassName: awx-projects-volume
4-2. デプロイの再実施
# ファイルの確認
> ls
awx-demo.yaml awx_work kustomization.yaml pv.yaml pvc.yaml
# 再デプロイの実施
> kustomize build . | kubectl apply -f -
namespace/awx01 unchanged
(中略)
persistentvolume/awx-projects-volume created
persistentvolumeclaim/awx-projects-claim created
deployment.apps/awx-operator-controller-manager unchanged
awx.awx.ansible.com/awx-demo created
# Podの状態を確認(起動まで5分位かかる)
$ kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator" -n awx01
NAME READY STATUS RESTARTS AGE
awx-demo-migration-24.6.1-k4zs4 0/1 Completed 0 12m
awx-demo-postgres-15-0 1/1 Running 0 13m
awx-demo-task-6459ffbb49-vqw4t 4/4 Running 0 13m
awx-demo-web-5487f9f566-7xb2h 3/3 Running 0 13m
5. AWXへログイン
AWXの管理者 (admin ユーザ) 初期パスワードは
kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" -n "NameSpace" | base64 --decode
で確認できます。
> kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" -n awx01 | base64 --decod
e
HgbMieXXXXXXXXXXX
AWXへログインを実施します。
AlmaLinuxに設定したIPとマニュフェストに記載したPort 30080を指定してブラウザからアクセスを実施します。

6. PersistentVolumeの確認
AWXのPodから指定した/home/user100/awx_work内が参照できるか確認します。
# AlmaLinux上でディレクトリとファイルを作成
> cd awx_work
> mkdir task01
> echo "AWX test file 01" >testfile.txt
> ls -l
合計 0
drwxr-xr-x 2 user100 user100 6 6月 25 22:40 task01
-rw-r--r-- 1 user100 user100 17 6月 25 22:53 testfile.txt
AWXのPodに接続します。
# Pod名の確認
> kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator" -n awx01
NAME READY STATUS RESTARTS AGE
awx-demo-migration-24.6.1-k4zs4 0/1 Completed 0 20h
awx-demo-postgres-15-0 1/1 Running 0 20h
awx-demo-task-6459ffbb49-vqw4t 4/4 Running 0 20h
awx-demo-web-5487f9f566-7xb2h 3/3 Running 0 20h
# 接続
> kubectl -n awx01 exec -it awx-demo-task-6459ffbb49-vqw4t -c awx-demo-ee -- /bin/bash
接続したPodで作成したディレクトリやファイルを確認します。
(/var/lib/awx/projects/に接続されているはずです)
# AWX Pod内の操作
> ls -l /var/lib/awx/projects/
total 0
drwxr-xr-x 2 1000 1000 6 Jun 25 13:40 task01
-rw-r--r-- 1 1000 1000 17 Jun 25 13:53 testfile.txt
> cat /var/lib/awx/projects/testfile.txt
AWX test file 01
参考及びリンク
Ansible AWX Operator Documentation
Ansibleを使ってStorage(ONTAP)を管理する1【Rocky LinuxへAnsible Install編】

