Debian 12 bookworm
Sponsored Link

Ansible : AWX インストール2023/08/01

 

Red Hat Ansible Tower のコミュニティエディション Ansible AWX のインストールです。

Ansible AWX の実装には、Kubernetes 環境が必要となります。
Kubernetes 環境であれば MicroK8s や K3s, Minikube 等々でも構築可能です。
もちろん RedHat OpenShift または そのコミュニティエディション OKD でも OK です。

[1]

当例では、開発/テスト用途で便利な Minikube を使用します。
よって、こちらを参考に Minikube をインストールしておきます

[2] 必要なパッケージをインストールしておきます。
root@dlp:~#
apt -y install git make curl
[3] 任意の一般ユーザーで Minikube を起動します。
debian@dlp:~$
minikube start --vm-driver=kvm2 --cpus=4 --memory=8g --addons=ingress

* minikube v1.31.1 on Debian 12.1 (kvm/amd64)
* Using the kvm2 driver based on user configuration
* Downloading VM boot image ...
    > minikube-v1.31.0-amd64.iso....:  65 B / 65 B [---------] 100.00% ? p/s 0s
    > minikube-v1.31.0-amd64.iso:  289.20 MiB / 289.20 MiB  100.00% 26.20 MiB p

.....
.....

* Verifying Kubernetes components...
* Verifying ingress addon...
* Enabled addons: storage-provisioner, default-storageclass, ingress
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

debian@dlp:~$
minikube status

minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

debian@dlp:~$
kubectl get pods -A

NAMESPACE       NAME                                        READY   STATUS      RESTARTS      AGE
ingress-nginx   ingress-nginx-admission-create-pfl2v        0/1     Completed   0             60s
ingress-nginx   ingress-nginx-admission-patch-thrkd         0/1     Completed   1             60s
ingress-nginx   ingress-nginx-controller-7799c6795f-9gnp8   1/1     Running     0             59s
kube-system     coredns-5d78c9869d-7t2r7                    1/1     Running     0             59s
kube-system     etcd-minikube                               1/1     Running     0             75s
kube-system     kube-apiserver-minikube                     1/1     Running     0             72s
kube-system     kube-controller-manager-minikube            1/1     Running     0             73s
kube-system     kube-proxy-sjmvd                            1/1     Running     0             59s
kube-system     kube-scheduler-minikube                     1/1     Running     0             72s
kube-system     storage-provisioner                         1/1     Running     1 (29s ago)   71s
[4] Ansible AWX をデプロイします。
# AWX に必要な AWX Operator を取得

debian@dlp:~$
git clone https://github.com/ansible/awx-operator.git

Cloning into 'awx-operator'...
remote: Enumerating objects: 7311, done.
remote: Counting objects: 100% (318/318), done.
remote: Compressing objects: 100% (193/193), done.
remote: Total 7311 (delta 119), reused 264 (delta 100), pack-reused 6993
Receiving objects: 100% (7311/7311), 2.04 MiB | 4.49 MiB/s, done.
Resolving deltas: 100% (4131/4131), done.

debian@dlp:~$
cd awx-operator
# AWX Operator のバージョンを指定
# バージョンの確認 : https://github.com/ansible/awx-operator/releases

debian@dlp:~/awx-operator$
git checkout 2.5.0

Note: switching to '2.5.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c 

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at dc2599b Docs: added contributing segment to docs (#1483)

# AWX 用に任意のネームスペース名をセットして Operator をデプロイ

debian@dlp:~/awx-operator$
export NAMESPACE=ansible-awx

debian@dlp:~/awx-operator$
make deploy

namespace/ansible-awx created
customresourcedefinition.apiextensions.k8s.io/awxbackups.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxrestores.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxs.awx.ansible.com created
serviceaccount/awx-operator-controller-manager created
role.rbac.authorization.k8s.io/awx-operator-awx-manager-role created
role.rbac.authorization.k8s.io/awx-operator-leader-election-role created
clusterrole.rbac.authorization.k8s.io/awx-operator-metrics-reader created
clusterrole.rbac.authorization.k8s.io/awx-operator-proxy-role created
rolebinding.rbac.authorization.k8s.io/awx-operator-awx-manager-rolebinding created
rolebinding.rbac.authorization.k8s.io/awx-operator-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/awx-operator-proxy-rolebinding created
configmap/awx-operator-awx-manager-config created
service/awx-operator-controller-manager-metrics-service created
deployment.apps/awx-operator-controller-manager created

debian@dlp:~/awx-operator$
kubectl get pods -n $NAMESPACE

NAME                                               READY   STATUS    RESTARTS   AGE
awx-operator-controller-manager-66c5b94884-2bxpj   2/2     Running   0          82s

debian@dlp:~/awx-operator$
cp awx-demo.yml ansible-awx.yml

debian@dlp:~/awx-operator$
vi ansible-awx.yml
# 任意のサービス名称に変更

---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: ansible-awx
spec:
  service_type: nodeport

# AWX 用のネームスペースを kubectl のコンテキストにセットして AWX をデプロイ

debian@dlp:~/awx-operator$
kubectl config set-context --current --namespace=$NAMESPACE

Context "minikube" modified.
debian@dlp:~/awx-operator$
kubectl apply -f ansible-awx.yml

awx.awx.ansible.com/ansible-awx created
# 進行状況はログで確認可

debian@dlp:~/awx-operator$
kubectl logs -f deployments/awx-operator-controller-manager -c awx-manager


.....
.....

----- Ansible Task Status Event StdOut (awx.ansible.com/v1beta1, Kind=AWX, ansible-awx/ansible-awx) -----


PLAY RECAP *********************************************************************
localhost                  : ok=81   changed=0    unreachable=0    failed=0    skipped=81   rescued=0    ignored=1


----------
{"level":"info","ts":"2023-08-01T01:08:32Z","logger":"KubeAPIWarningLogger","msg":"unknown field \"status.conditions[1].ansibleResult\""}

# 最終的に上記のように failed=0 で終了していれば OK


debian@dlp:~$
kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator"

NAME                                READY   STATUS    RESTARTS   AGE
ansible-awx-postgres-13-0           1/1     Running   0          7m30s
ansible-awx-task-6dbcb97849-cdr2q   4/4     Running   0          6m51s
ansible-awx-web-68f58f9b8-j5znv     3/3     Running   0          5m30s

debian@dlp:~$
kubectl get service -l "app.kubernetes.io/managed-by=awx-operator"

NAME                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
ansible-awx-postgres-13   ClusterIP   None            <none>        5432/TCP       8m
ansible-awx-service       NodePort    10.105.68.188   <none>        80:30115/TCP   7m23s

# サービス URL 確認

debian@dlp:~$
minikube service ansible-awx-service --url -n ansible-awx

http://192.168.39.19:30115
# 管理アカウントのパスワード 確認

debian@dlp:~$
kubectl get secret ansible-awx-admin-password -o jsonpath="{.data.password}" | base64 --decode; echo

PE8Mccu5sISwr2P6ZgAVZgbrO8XNHvkN
# Kubernetes クラスター外部からもアクセスできるようにするには要ポートフォワード
# [10445] ⇒ Minikube インストールホストが待ち受けるポート ⇒ 任意の空きポートを指定すれば OK
# [80] ⇒ AWX コンテナーが待ち受けているポート

debian@dlp:~$
kubectl port-forward service/ansible-awx-service --address 0.0.0.0 10445:80

Forwarding from 0.0.0.0:10445 -> 8052
[5] Web ブラウザーを起動して Ansible AWX にアクセスします。
Minikube インストールホスト ローカル からアクセスする場合は、確認したサービス URL へアクセスします。
ポートフォワードした場合は、ローカルネットワーク内の任意のコンピューターから [http://(Minikube インストールホスト のホスト名 または IP アドレス):(設定したポート)] へアクセスします。
アクセスするとログイン画面が表示されます。
ユーザー名 [admin], パスワードは確認した管理アカウントのパスワードでログイン可能です。
[6] 正常にログインすると、Ansible AWX のダッシュボードが表示されます。以上でインストール完了です。
[7] なお、画面例は英語表記となっていますが、日本語 OS でアクセスすれば、自動的に日本語表記となります。
関連コンテンツ