How To Install Ansible AWX on Ubuntu 20.04|18.04
Welcome to today’s guide on how to install Ansible AWX on Ubuntu 20.04|18.04 with Nginx Reverse Proxy and optional Let’s Encrypt SSL Certificate. Ansible AWX is an open source tool which provides a web-based user interface, REST API, and task engine for easy and collaborative management of Ansible Playbooks and Inventories.
AWX allows you to centrally manage Ansible playbooks, inventories, Secrets, and scheduled jobs from a web interface. It is easy to install AWX on Ubuntu 20.04|18.04 (Bionic Beaver) Linux system. Use the steps shared below to install and configure Ansible AWX on Ubuntu 20.04|18.04 Linux server.
Starting in version 18.0 of AWX, the recommended installation method is via AWX Operator. As the operator installation method requires a Kubernetes Cluster, we will perform a single node Kubernetes installation on Ubuntu Linux using k3s.
Setup minimum requirements
- Ubuntu 20.04|18.04 LTS Server
- At least 8GB of RAM – More is better
- 4vcpus – Pump more if you have
- 10GB free disk storage
- root or user with sudo for ssh
Step 1: Update Ubuntu system
Update and upgrade your system
sudo apt update && sudo apt -y upgrade
sudo rebootStep 2: Install Single Node k3s Kubernetes
We will deploy a single node kubernetes using k3s lightweight tool. K3s is a certified Kubernetes distribution designed for production workloads in unattended, resource-constrained environments. The good thing with k3s is that you can add more Worker nodes at later stage if need arises.
K3s provides an installation script that is a convenient way to install it as a service on systemd or openrc based systems
Let’s run the following command to install K3s on our Ubuntu system:
curl -sfL https://get.k3s.io | sudo bash -
sudo chmod 644 /etc/rancher/k3s/k3s.yamlInstallation process output:
[INFO] Finding release for channel stable
[INFO] Using v1.21.3+k3s1 as release
[INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.21.3+k3s1/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.21.3+k3s1/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Creating /usr/local/bin/ctr symlink to k3s
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s.service
[INFO] systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO] systemd: Starting k3sValidate K3s installation:
The next step is to validate our installation of K3s using kubectl command which was installed and configured by installer script.
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ubuntu-01 Ready control-plane,master 33s v1.22.5+k3s1You can also confirm Kubernetes version deployed using the following command:
$ kubectl version --short
Client Version: v1.22.5+k3s1
Server Version: v1.22.5+k3s1The K3s service will be configured to automatically restart after node reboots or if the process crashes or is killed.
Step 3: Deploy AWX Operator on Kubernetes
This Kubernetes Operator has to be deployed in your Kubernetes cluster, which in our case is powered by K3s. The operator we’ll deploy can manage one or more AWX instances in any namespace.
Install git and make tools:
sudo apt update
sudo apt install git build-essentialInstall Helm
AWX operator uses Helm ecosystem.
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
Verify:
helm version
✅ STEP 5 — Install AWX Operator
Create namespace:
kubectl create namespace awx
Install operator:
kubectl apply -f https://raw.githubusercontent.com/ansible/awx-operator/devel/deploy/awx-operator.yaml -n awx
Check operator:
kubectl get pods -n awx
Wait until:
awx-operator-controller-manager Running
✅ STEP 6 — Deploy AWX Instance
Create config file:
vim awx.yaml
AWX Deployment Manifest
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx-demo
namespace: awx
spec:
service_type: nodeport
Apply deployment:
kubectl apply -f awx.yaml
✅ STEP 7 — Wait for Installation
This takes 5–10 minutes.
Monitor:
kubectl get pods -n awx
You should see:
awx-demo-web
awx-demo-task
postgres
All must be:
Running
✅ STEP 8 — Get AWX URL
Check service:
kubectl get svc -n awx
Example output:
awx-demo-service NodePort 80:30080
Access:
http://EC2-PUBLIC-IP:30080
🎉 AWX LOGIN PAGE appears.
✅ STEP 9 — Get Admin Password
Retrieve password:
kubectl get secret awx-demo-admin-password \
-n awx -o jsonpath="{.data.password}" | base64 --decode
Login:
Username: admin
Password: <output>
Ansible AWX web portal is now accessible on http://hostip_or_hostname:32000.
You are presented with the welcome dashboard similar to one below.
The login username is admin
The new AWX interface is beautifully designed with Love. It is a serious redesign with good polishing.
Review Kubernetes Node resources to ensure they are enough to run AWX:
$ kubectl top nodes --use-protocol-buffers
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
ubuntu 102m 1% 2534Mi 15%







































