Skip to content

Deploy AWX on Minikube Cluster

Minikube Cluster based deployment of Ansible AWX. (Ansible Tower)

Note

This document assumes you are running Ubuntu Server 20.04 or later.

Install Minikube Cluster

Update the Ubuntu Server

sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y

Download and Install Minikube (Ubuntu Server)

Additional Documentation: https://minikube.sigs.k8s.io/docs/start/

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
sudo dpkg -i minikube_latest_amd64.deb

# Download Docker and Common Tools
sudo apt install docker.io nfs-common iptables nano htop -y

# Configure Docker User
sudo usermod -aG docker nicole
:::caution Be sure to change the nicole username in the sudo usermod -aG docker nicole command to whatever your local username is. :::

Fully Logout then sign back in to the server

exit

Validate that permissions allow you to run docker commands while non-root

docker ps

Initialize Minikube Cluster

Additional Documentation: https://github.com/ansible/awx-operator

minikube start --driver=docker
minikube kubectl -- get nodes
minikube kubectl -- get pods -A

Make sure Minikube Cluster Automatically Starts on Boot

/etc/systemd/system/minikube.service
[Unit]
Description=Minikube service
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
User=nicole
ExecStart=/usr/bin/minikube start --driver=docker
ExecStop=/usr/bin/minikube stop

[Install]
WantedBy=multi-user.target
:::caution Be sure to change the nicole username in the User=nicole line of the config to whatever your local username is. ::: :::info You can remove the --addons=ingress if you plan on running AWX behind an existing reverse proxy using a "NodePort" connection. :::

Restart Service Daemon and Enable/Start Minikube Automatic Startup

sudo systemctl daemon-reload
sudo systemctl enable minikube
sudo systemctl start minikube

Make command alias for kubectl

Be sure to add the following to the bottom of your existing profile file noted below.

~/.bashrc
...
alias kubectl="minikube kubectl --"
:::tip If this is a virtual machine, now would be the best time to take a checkpoint / snapshot of the VM before moving forward, in case you need to perform rollbacks of the server(s) if you accidentally misconfigure something. :::

Make AWX Operator Kustomization File:

Find the latest tag version here: https://github.com/ansible/awx-operator/releases

kustomization.yml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - github.com/ansible/awx-operator/config/default?ref=2.4.0
  - awx.yml
images:
  - name: quay.io/ansible/awx-operator
    newTag: 2.4.0
namespace: awx
awx.yml
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx

---
apiVersion: v1
kind: Service
metadata:
  name: awx-service
  namespace: awx
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30080  # Choose an available port in the range of 30000-32767
  selector:
    app.kubernetes.io/name: awx-web

Apply Configuration File

Run from the same directory as the awx-operator.yaml file.

kubectl apply -k .
:::info If you get any errors, especially ones relating to "CRD"s, wait 30 seconds, and try re-running the kubectl apply -k . command to fully apply the awx.yml configuration file to bootstrap the awx deployment. :::

View Logs / Track Deployment Progress

kubectl logs -n awx awx-operator-controller-manager -c awx-manager

Get AWX WebUI Address

minikube service -n awx awx-service --url

Get WebUI Password:

kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" | base64 --decode ; echo