139 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Deploy AWX 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
 | |
| ``` |