AWX is an open-source alternative to Red Hat Tower (Ansible Automation Platform). I’ve used both pretty extensively in the past, and since AWX is essentially free, I’ll be covering that product in the next few blogs.
AWX is very useful for automating application creation for load balancers. There are a few components that will be needed to automate app deployment, but this is definitely the first step. I’m going to publish a few blogs about automated app deployments using AWX and Avi.
- Software Versions used in this demo
- Deploy Ubuntu VM
- Install Ubuntu from ISO
- Install AWX on Ubuntu 24
Software Versions used in this demo
Software | Version |
---|---|
OS | Ubuntu 24.04 LTS |
AWX | 24.3.1 |
VMware vCenter | 8.0.2 |
Deploy Ubuntu VM
In order to install AWX, we need to deploy a VM. We’ll be using the latest stable release for Ubuntu, which at the time of writing is Ubuntu 24.04. Navigate to ubuntu’s website and download the ISO.
In vCenter, navigate to the Content Libraries and create a new content library, if you don’t already have one.
Upload the ubuntu iso file to the content library.
As the ubuntu iso is uploading to the content library, go ahead and deploy a new VM with the above specs.
- CPU: 2
- Memory: 4GB
- Disk: 20GB (20GB minimum, I would recommend 50GB)
- Network Adapter: a routable network, in my case VM Network.
– Disk Size –
When the VM is ready come back and select the CD/DVD drive as the ubuntu iso file. Make sure to check Connect at Power On.
Power on the VM
Install Ubuntu from ISO
After Ubuntu loads, we need to install the OS to the disk.
Click the image of Ubuntu to launce the remote console.
Navigate through the install steps, I’m not going to cover these since there are 1000s of guides on this topic, and it’s rather straightforward.
Once you’ve installed the OS, use the UI interface to set a static IP address (or just use the dhcp address).
Additionally, you will need to run a few commands to update and enable ssh.
1 – apt update 2 – apt upgrade 3 – apt-get install open-vm-tools-desktop 4 – apt install git make -y 5 – apt install ssh 6 – sudo su - 7 – systemctl enable ssh |
You should be able to ssh into the ubuntu machine.
Install AWX on Ubuntu 24
Now that the base Ubuntu OS is ready to go, we can install any required packages and deploy AWX. First we’re going to install docker and prepare the environment to run minikube. Minikube will be used to deploy awx. I’m more or less following this guide here: https://www.linuxtechi.com/install-ansible-awx-on-ubuntu/#google_vignette
The docker install detailed steps can be found here: https://docs.docker.com/engine/install/ubuntu/
sudo
apt-get update
sudo
apt-get install
ca-certificates curl
sudo
install
-m 0755 -d /etc/apt/keyrings
sudo
curl -fsSL https://download.docker.com/linux/ubuntu/gpg
-o /etc/apt/keyrings/docker.asc
sudo
chmod
a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo
\
"deb [arch=$(dpkg --print-architecture) signed-by=
/etc/apt/keyrings/docker
.asc] https:
//download
.docker.com
/linux/ubuntu
\
$(.
/etc/os-release
&&
echo
"$VERSION_CODENAME"
) stable" | \
sudo
tee
/etc/apt/sources
.list.d
/docker
.list >
/dev/null
sudo
apt-get update
sudo
apt-get install
docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Next we need to install minikube. Very simple, just a few commands.
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo
install
minikube-linux-amd64 /usr/local/bin/minikube
&& rm
minikube-linux-amd64
sudo
usermod
-aG docker $USER && newgrp docker
minikube start –vm-driver=docker –addons=ingress
Next we need to install kubectl, to interact with the K8s cluster
sudo
su
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
install
-o root -g root -m 0755 kubectl /usr/local/bin/kubectl
Finally we can deploy the AWX container via awx-operator. Make sure you exit from su, and back into the ubuntu user.
1 – git clone https://github.com/ansible/awx-operator.git 2 – cd awx-operator/ 3 – git checkout 2.16.1 # Or whatever the latest version 4 – export NAMESPACE=ansible-awx 5 – make deploy 6 – kubectl create -f awx-demo.yml -n ansible-awx | |
You can verify your pods and services as shown below.
kubectl get pods -n ansible-awx
kubectl get svc -n ansible-awx
Lastly we need to open up awx to connections from outside of the ubuntu server.
minikube service awx-demo-service –url -n ansible-awx
kubectl port-forward service/awx-demo-service
-n ansible-awx --address 0.0.0.0 10445:80 &
Navigate to your browser on the IP address and port shown above: http://192.168.3.23:10445/#/login
You should see the above screen. the username is “admin” and to get your password, run the command below.
kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}"
-n ansible-awx | base64
--decode; echo
And that’s it.
AWX is up and running and ready to start automating jobs!