Was ist AWX?
AWX dient als grafische Benutzeroberfläche (GUI) und ist ein Open-Source Projekt. Das kommerzielle Red-Hat Produktion Automation Controller, bzw. früher Ansible Tower, nutzt im Endeffekt den AWX-Code in ihrem Produkt. Intern nutzt AWX Ansible für die Automation und Ausführung von Ansible-Playbooks. Über eine entsprechende Usersteuerung wird der Zugriff darauf gewährt.
Eigeninstallation, Vorgehen
AWX kann selbst installiert und genutzt werden. Am einfachsten geschieht dies über eine schon lauffähige Kubernetes-Plattform, z. B. Minikube.
Docker Client mit Minikube dauerhaft verbinden
Damit Docker-Images in Minikube geladen werden können, bitte die eigene .bash_rc am Ende erweitern um folgenden Eintrag:
eval $(minikube docker-env)
Nun nochmals erneut ab- und dann wieder anmelden, damit die Einstellungen auch geladen werden.
Erstellen eines eigenen AWX-Namespace in Kubernetes
user@host:~$ kubectl create namespace awx
Aktuellen Kontext auf awx wechseln
kubectl config set-context --current --namespace=awx
Clonen des AWX-Repository
user@host:~$ git clone https://github.com/ansible/awx-operator.git
Aktuelle Version auschecken und Verzeichnis wechseln
user@host:~$ git git checkout tags/2.19.1
user@host:~$ cd awx-operator
Hier nun eine Anpassung am Image in der Datei config/default/manager_auth_proxy_patch.yaml vornehmen. Wir tauschen dabei den Eintrag:
image: gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0
aus in
image: quay.io/brancz/kube-rbac-proxy:v0.15.0
Siehe Codeausschnitt:
user@host:~/awx-operator$ cat config/default/manager_auth_proxy_patch.yaml
# This patch inject a sidecar container which is a HTTP proxy for the
# controller manager, it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews.
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller-manager
namespace: system
spec:
template:
spec:
containers:
- name: kube-rbac-proxy
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- "ALL"
image: quay.io/brancz/kube-rbac-proxy:v0.15.0
args:
- "--secure-listen-address=0.0.0.0:8443"
...
Deploy starten
user@host:~/awx-operator$ make deploy
Erstellen einer AWX Instanz
Dazu wird die Datei awx-demo.yaml mit folgendem Inhalt erstellt:
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx-demo
spec:
service_type: nodeport
Deployment AWX starten
user@host:~/awx-operator$ kubectl apply -f awx-demo.yaml -n awx
Dies dauert eine Weile, hier bitte Geduld haben. Das Ganze kann parallel geprüft werden mit:
user@host:~/awx-operator$ kubectl get pods -w -n awx
NAME READY STATUS RESTARTS AGE
awx-migration-24.6.1-rgjxz 0/1 Completed 0 4h48m
awx-operator-controller-manager-55c68ccbd-p2gbb 2/2 Running 8 (4h24m ago) 4h52m
awx-postgres-15-0 1/1 Running 4 (4h24m ago) 4h50m
awx-task-5777b55759-cfhvz 4/4 Running 13 (4h24m ago) 4h49m
awx-web-869c6bcb44-5bhr9 3/3 Running 14 (27m ago) 4h49m
Sobald alle Pods in Ihrem Replicaset (READY x/x) vorhanden und im STATUS „Running“ sind, kann dies mit STRG + C abgebrochen werden.
Ermittlung Admin-Passwort
user@host:~/awx-operator$ kubectl get secret awx-admin-password -n awx -o jsonpath="{.data.password}" | base64 --decode
ADMIN_PWD
user@host:~/awx-operator$
Dieses Passwort des Users admin nun sicher verwahren, z. B. in keepass.
Webfrontend erreichen
Um das Webfrontend per Browser zu erreichen, startet man am einfachsten folgenden Befehl:
user@host:~/awx-operator$ minikube service awx-service -n awx
┌───────────┬─────────────┬─────────────┬───────────────────────────┐
│ NAMESPACE │ NAME │ TARGET PORT │ URL │
├───────────┼─────────────┼─────────────┼───────────────────────────┤
│ awx │ awx-service │ http/80 │ http://192.168.49.2:32190 │
└───────────┴─────────────┴─────────────┴───────────────────────────┘
🎉 Öffne Service awx/awx-service im Default-Browser...
Wird in einer aktuellen Browsersitzung geöffnet.
Nun erscheint in einem Browser die WebGUI von AWX. Hier bitte den User „admin“ und das zuvor gesicherte Passwort für einen ersten Login eingeben.
Nach erfolgreichem Login meldet sich AWX mit folgender Übersicht:

Admin-Passwort vergessen bzw. selbst setzen?
Wurde das Admin-Passwort vergessen, kann dies mit folgendem Befehl neu gesetzt werden:
user@host:~$ kubectl exec -it awx-web-58b6b6cf5d-sjwwq -n awx -- awx-manage changepassword admin
Changing password for user 'admin'
Password:
Password (again):
Password changed successfully for user 'admin'
user@host:~$
AWX wieder komplett löschen
Soll ein funktionierendes AWX wieder komplett aus dem Kubernetes-Workspace gelöscht werden:
user@host:~$ kubectl delete namespace awx --ignore-not-found
Dieser Vorgang kann jedoch eine gewisse Zeit in Anspruch nehmen.