Ansible : Install AWX2023/08/01 |
Install Ansible AWX that is the community edition of Red Hat Ansible Tower.
To install Ansible AWX, it needs Kubernetes infrastructure. |
|
[1] |
On this example, use Minikube for AWX. |
[2] | Install other required packages. |
root@dlp:~# apt -y install git make curl
|
[3] | Start Minikube as a common user. |
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 defaultdebian@dlp:~$ minikube status minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configureddebian@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] | Deploy Ansible AWX. |
# get AWX Operator first 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
# specify a version of AWX Operator # make sure versions : 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 # set any namespace you like for AWX and deploy 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 createddebian@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 # change to any service name you like
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: ansible-awx
spec:
service_type: nodeport
# set namespace for AWX you set to kubectl context and deploy 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 # possible to see installation progress on the logs 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\""}
# that's OK if finished with [failed=0]
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 5m30sdebian@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 # display service URL debian@dlp:~$ minikube service ansible-awx-service --url -n ansible-awx http://192.168.39.19:30115 # confirm password for admin account debian@dlp:~$ kubectl get secret ansible-awx-admin-password -o jsonpath="{.data.password}" | base64 --decode; echo PE8Mccu5sISwr2P6ZgAVZgbrO8XNHvkN # if you access from outside of Kubernetes cluster, it needs to set port forwarding # [10445] ⇒ the port that Minikube installed host listens ⇒ specify any free port you like # [80] ⇒ the port AWX container listens 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] | Access to Ansible AWX with Web browser. If you access from Minikube installed localhost, specify the service URL confirmed above. If you set port forwarding, access to the URL [http://(Minikube installed hostname or IP address):(forwarding port)] on any computer in your local network. After successfully accessed, AWX login form is shown. It's possible to login with user [admin] and its password is the one you confirmed above. |
[6] | If successfully logined, Ansible AWX Dashboard is displayed. That's OK to install AWX. |
Sponsored Link |