Create a Ubuntu Virtual Machine with:
32 GB RAM
8 cores
120 GB HD

Stap-voor-stap: Installeer AWX 24.6.1 on Minikube (Ubuntu 24.04.2 LTS)

🔧 1. Voorzien van nieuwste software

1$ sudo apt update && sudo apt upgrade -y
2$ sudo apt install -y curl wget apt-transport-https ca-certificates gnupg lsb-release software-properties-common
3$ sudo timedatectl set-timezone Europe/Amsterdam

📦 2. Installeer Docker (Minikube backend)

 1$ curl -fsSL https://get.docker.com | sudo bash
 2$ sudo usermod -aG docker $USER
 3$ newgrp docker  # Activate group without reboot
 4
 5Enable en start Docker:
 6$ sudo systemctl enable docker
 7$ sudo systemctl start docker
 8
 9Test:
10$ docker run hello-world

🧱 3. Installeer Minikube

1$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
2$ sudo install minikube-linux-amd64 /usr/local/bin/minikube
3
4Test:
5$ minikube version

⚙️ 4. Installeer kubectl (Kubernetes CLI)

1$ curl -LO "https://dl.k8s.io/release/$(curl -Ls https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
2$ sudo install kubectl /usr/local/bin/kubectl
3
4Test:
5$ kubectl version --client

🚀 5. Start Minikube

1$ minikube start --cpus=4 --memory=8192 --driver=docker
2
3Optioneel: Stel in als standaard
4$ minikube config set memory 8192
5$ minikube config set cpus 4
6$ minikube config set driver docker

📁 6. Installeer de AWX Operator (overeenkomend met 24.6.1)

 1$ git clone https://github.com/ansible/awx-operator.git
 2$ cd awx-operator
 3$ git checkout 2.14.0  # Matches AWX 24.6.1
 4
 5Installeer benodigde tools:
 6$ sudo apt install -y make
 7
 8Installeer de operator:
 9$ make deploy
10
11Controleer:
12$ kubectl get pods -n awx

📄 7. Maak de AWX Instance (CR)

Maak een bestand awx.yaml:

 1apiVersion: awx.ansible.com/v1beta1
 2kind: AWX
 3metadata:
 4  name: awx
 5spec:
 6  service_type: nodeport
 7  ingress_type: none
 8  image: quay.io/ansible/awx
 9  image_version: 24.6.1
10  postgres_storage_class: standard
11  postgres_resource_requirements:
12    requests:
13      memory: 512Mi
14      cpu: 250m
15    limits:
16      memory: 1Gi
17      cpu: 500m
18  web_resource_requirements:
19    requests:
20      memory: 512Mi
21      cpu: 250m
22    limits:
23      memory: 2Gi
24      cpu: 1
25
26Daarna toepassen:
27$ kubectl apply -f awx.yaml -n awe
28
29Bekijk de deployment:
30$ kubectl get awx -n awx
31$ kubectl get pods -n awx -w
32
33$ kubectl get svc -n awx

🌐 8. Toegang tot de AWX website

 1NodePort verkrijgen:
 2$ kubectl get svc -n awx | grep awx-service
 3
 4Voorbeeld output:
 5awx-service   NodePort   10.0.0.94   <none>   8052:30437/TCP   5m
 6awx-service   NodePort   10.98.159.10   <none>  80:30153/TCP   5m29s
 7
 8Dan:
 9$ minikube ip
10
11NodePort verkrijgen:
12$ kubectl get svc awx-service -n awx -o yaml
13
14$ minikube service awx-service -n awx

Of open in browser:

1$ minikube ip
2http://<minikube-ip>:<NodePort>
3http://192.168.49.2:31082/

🔐 9. Login credentials Het admin password verkrijgen:

1$ kubectl get secret awx-admin-password -n awx -o jsonpath="{.data.password}" | base64 --decode && echo
2* Username: admin
3* Password: zie de output van hierboven

🧼 10. (Optioneel) Open het Minikube dashboard Kubernetes Dashboard

1$ minikube dashboard

Stap-voor-stap: Auto-start AWX op Minikube na een Reboot

🔁 1. Zorg dat Docker opstart tijdens booten

1$ sudo systemctl enable docker

🚀 2. Maak een systemd service om Minikube automatisch op te starten Maak een nieuwe systemd unit:

 1$ sudo vim /etc/systemd/system/minikube.service
 2Paste this:
 3
 4[Unit]
 5Description=Minikube K8s Cluster
 6After=docker.service
 7Requires=docker.service
 8
 9[Service]
10Type=oneshot
11ExecStart=/usr/local/bin/minikube start --driver=docker
12RemainAfterExit=yes
13User=your-username
14Environment=HOME=/home/your-username
15WorkingDirectory=/home/your-username
16
17[Install]
18WantedBy=multi-user.target
19
20🔧 Vervang hier your-username met de naam van de Linux username.
21
22Opslaan en uitvoeren:
23$ sudo systemctl daemon-reexec
24$ sudo systemctl daemon-reload
25$ sudo systemctl enable minikube.service
26
27Test dit zelf:
28$ sudo systemctl start minikube.service
29
30$ kubectl get pods -n awx -w
31NAME                                              						READY   STATUS      RESTARTS      AGE
32awx-migration-24.6.1-pn969				                       0/1     Completed   0             21m
33awx-operator-controller-manager-68699bb54-pscct   		2/2     Running     2 (64s ago)   68m
34awx-postgres-15-0                                 					1/1     Running     1 (58s ago)   26m
35awx-task-86d87f596c-xm8wx                         				4/4     Running     4 (62s ago)   25m
36awx-web-7c76dcb5b8-ctmrf                          				3/3     Running     3 (54s ago)   25m

🛠️ 3. Verzeker dat AWX Operator en AWX pods auto-recoveren Kubernetes voert automatisch pod recovery uit. Zo lang als Minikube correct opstart en de AWX Operator gedeployed is met: make deploy …hiermee zal de AWX custom resource and pods opnieuw aangemaakt worden na een reboot.

Bevestig dit via:

1$ kubectl get pods -n awx

🌐 4. Maak de NodePort consistent Kubernetes kent automatisch een NodePort toe tenzij je deze expliciet instelt. Om de website altijd dezelfde poort te geven:

 1$ kubectl patch svc awx-service -n awx --type='json' -p='[
 2  {"op": "replace", "path": "/spec/type", "value":"NodePort"},
 3  {"op": "replace", "path": "/spec/selector", "value":{
 4    "app.kubernetes.io/component": "awx",
 5    "app.kubernetes.io/managed-by": "awx-operator",
 6    "app.kubernetes.io/name": "awx-web"
 7  }},
 8  {"op": "replace", "path": "/spec/ports/0/nodePort", "value":31082}
 9]'
10
11
12$ vim awx-nodeport-service.yaml
13
14apiVersion: v1
15kind: Service
16metadata:
17  name: awx-service
18  namespace: awx
19spec:
20  type: NodePort
21  selector:
22    app: awx
23  ports:
24    - protocol: TCP
25      port: 80
26      targetPort: 8052
27      nodePort: 31082
28
29Opnieuw toepassen:
30$ kubectl apply -f awx-nodeport-service.yaml
31
32De website is dan te benaderen via:
33http://<server-ip>:31082

🧪 5. Controleer na de reboot Reboot de server:

1$ sudo reboot
2
3Na de reboot:
4$ minikube status
5$ kubectl get pods -n awx

Controleer de website:

1$ minikube ip
2http://<your-server-ip>:31082