diff --git a/Containers/Kubernetes/AWX (MiniKube).md b/Containers/Kubernetes/AWX (MiniKube).md new file mode 100644 index 0000000..9d86504 --- /dev/null +++ b/Containers/Kubernetes/AWX (MiniKube).md @@ -0,0 +1,140 @@ +# 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 +``` \ No newline at end of file