# AWX Operator on Minikube Cluster Minikube Cluster based deployment of Ansible AWX. (Ansible Tower) :::note Prerequisites 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 ```jsx title="/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. ```jsx title="~/.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 ```jsx title="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 ``` ```jsx title="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 ```