140 lines
3.8 KiB
Markdown
140 lines
3.8 KiB
Markdown
# 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
|
|
``` |