1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GUI版のAnsible(AWX)使ってStorage(ONTAP)を管理する1【AlmaLinuxへAWX Install編】

Last updated at Posted at 2025-06-26

はじめに

Ansibleとは効率的な自動化と構成管理を実現するためのツールで、過去の記事でもCLIを介してのStorage(ONTAP)管理操作について紹介してきましたが、本記事では、AnsibleのGUIツールであるAWXを用いたStorage(ONTAP)管理操作について記載します。

GUIツールである利点については以下のような内容が考えられます。

直感的操作

  • GUIによる直感的なインターフェースを提供し、マウス操作やドラッグ&ドロップなどの視覚的な操作が可能(初心者でも簡単に利用しやすい)

可視化とモニタリング

  • Jobの実行状況や進捗状況を視覚的に確認することができ、タスクの実行ログやエラーメッセージをリアルタイムで表示することで、問題の追跡やトラブルシューティングが容易
  • ダッシュボードやグラフなどのモニタリング機能も統合されており、システム状態を一目で把握することが可能

ワークフローの自動化

  • タスクの自動化とワークフローの設定を簡素化
  • GUI上でタスクを配置し、依存関係や制約を設定することで、複雑なタスクの実行順序や条件を容易に管理

チームコラボレーション

  • チームメンバー間でのタスクの共有や編集が容易
  • 役割ベースのアクセス制御を提供し、各ユーザーに対して適切な権限を設定することが可能

016.png

何をしたい?できる?

  • 検証環境として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

qiita-square

設定手順

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の導入

まずは、赤字/赤枠の部分の作成を実施します

qiita-square

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の作成とマニュフェスト適用を実施する事になります。

qiita-square

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設定を追加

作成イメージとして以下のような環境を作成します。
qiita-square

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を指定してブラウザからアクセスを実施します。
qiita-square

qiita-square

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

参考及びリンク

K3s - Lightweight Kubernetes

kustomize

Installing AWX

AWX Operator

Ansible AWX Operator Documentation

Ansibleを使ってStorage(ONTAP)を管理する1【Rocky LinuxへAnsible Install編】

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?