AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform. Specifically from which the automation controller component (formerly Tower) is derived.
AWX is designed to be a frequently released, fast-moving project where all new development happens. VS. Automation controller (Tower) is produced by taking selected releases of AWX, hardening them for long-term supportability, and making them available to customers as a hosted service within Red Hat Ansible Automation Platform.
Ansible Automation Platform is fully supported by Red Hat, while AWX is supported by the community. (something to keep in mind)
Current versions of AWX are deployed by installing via the AWX Operator.
This operator is meant to provide a more Kubernetes-native installation method for AWX via an AWX Custom Resource Definition (CRD). This Kubernetes Operator is meant to be deployed in your Kubernetes cluster(s) and can manage one or more AWX instances in any namespace.
When you upgrade the AWX version the operator must be upgraded first. They go hand-in-hand.
You can install in an existing cluster, create a cluster using Minikube for testing not recommended permanently, or create a new dedicated cluster.
Dont worry, you can also follow a simplified deployment which uses k3s (Rancher) and provides configuration templates for resources and ingress by using this guide: AWX on k3s
After deployment you will see that all of the required objects have been deployed in the awx namespace.
$ kubectl -n awx get awx,all,ingress,secrets
NAME AGE
awx.awx.ansible.com/awx 5m
NAME READY STATUS RESTARTS AGE
pod/awx-operator-controller-manager-5d5d58758c-7xcrl 2/2 Running 0 5m35s
pod/awx-postgres-13-0 1/1 Running 0 4m46s
pod/awx-5b859c644-zp6x5 4/4 Running 0 4m26s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/awx-operator-controller-manager-metrics-service ClusterIP 10.43.229.20 8443/TCP 5m45s
service/awx-postgres-13 ClusterIP None 5432/TCP 4m46s
service/awx-service ClusterIP 10.43.135.205 80/TCP 4m28s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/awx-operator-controller-manager 1/1 1 1 5m45s
deployment.apps/awx 1/1 1 1 4m26s
NAME DESIRED CURRENT READY AGE
replicaset.apps/awx-operator-controller-manager-5d5d58758c 1 1 1 5m35s
replicaset.apps/awx-5b859c644 1 1 1 4m26s
NAME READY AGE
statefulset.apps/awx-postgres-13 1/1 4m46s
NAME CLASS HOSTS ADDRESS PORTS AGE
ingress.networking.k8s.io/awx-ingress awx.example.com 192.168.0.219,2400:4050:a8e2:a00:250:56ff:fe86:454d 80, 443 4m27s
NAME TYPE DATA AGE
secret/awx-admin-password Opaque 1 5m
secret/awx-postgres-configuration Opaque 6 5m
secret/awx-secret-tls kubernetes.io/tls 2 5m
secret/redhat-operators-pull-secret kubernetes.io/dockerconfigjson 1 5m
secret/awx-app-credentials Opaque 3 4m30s
secret/awx-secret-key Opaque 1 4m55s
secret/awx-broadcast-websocket Opaque 1 4m52s