Ansible AWX Talk - October 18, 2022


What is AWX?

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)

How is AWX deployed?

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   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            8443/TCP   5m45s
service/awx-postgres-13                                   ClusterIP   None                    5432/TCP   4m46s
service/awx-service                                       ClusterIP           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,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                       2      5m
secret/redhat-operators-pull-secret   1      5m
secret/awx-app-credentials            Opaque                           3      4m30s
secret/awx-secret-key                 Opaque                           1      4m55s
secret/awx-broadcast-websocket        Opaque                           1      4m52s

Examples of what AWX can do

AWX Dashboard Demo

Brief Demo

Open Discussion ???

Talk about Linux