# AWX Installation auf KVM mit Ubuntu 24.04.2 LTS

## [![AWX-mit-Docker-und-VM-Kubernetes.png](https://wiki.unixweb.net/uploads/images/gallery/2025-07/scaled-1680-/awx-mit-docker-und-vm-kubernetes.png)](https://wiki.unixweb.net/uploads/images/gallery/2025-07/awx-mit-docker-und-vm-kubernetes.png)Voraussetzungen

- KVM Host mit Ubuntu 24.04.2 LTS (frisch installiert)
- `nesting=1` gesetzt, falls LXC verwendet wird
- Ausreichend CPU/RAM (mindestens 2 vCPU, 4 GB RAM empfohlen)

---

## 1. System aktualisieren

```bash
sudo apt update && sudo apt upgrade -y

```

## 2. Wichtige Pakete installieren

```bash
sudo apt install -y make curl git apt-transport-https ca-certificates gnupg software-properties-common make

```

## 3. Docker installieren

```bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

```

> Hinweis: Danach einmal neu anmelden oder `newgrp docker`

---

## 4. KIND (Kubernetes in Docker) installieren

```bash
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

```

## 5. `kubectl` installieren

```bash
curl -LO "https://dl.k8s.io/release/v1.29.2/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

```

---

## 6. Kubernetes Cluster mit Portweiterleitung erstellen

```yaml
# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
    extraPortMappings:
      - containerPort: 32464
        hostPort: 32464
        protocol: TCP

```

```bash
kind create cluster --name awx --config kind-config.yaml

```

---

## 7. AWX Operator installieren

```bash
git clone https://github.com/ansible/awx-operator.git
cd awx-operator
git checkout tags/24.2.0
make deploy NAMESPACE=awx

```

---

## 8. AWX Deployment erstellen (`awx.yaml`)

```yaml
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx
  namespace: awx
spec:
  service_type: nodeport
  ingress_type: none
  create_preload_data: true

```

```bash
kubectl apply -f awx.yaml -n awx

```

---

## 9. Warten, bis alle Pods laufen

```bash
kubectl get pods -n awx -w

```

> Achte darauf, dass `awx-task` und `awx-web` auf `Running` stehen

---

## 10. NodePort finden

```bash
kubectl get svc -n awx awx-service

```

> Beispielausgabe:

```
NAME          TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
awx-service   NodePort   10.96.242.91   <none>        80:32464/TCP   60m

```

---

## 11. AWX Web-UI aufrufen

**Im Browser:**

```
http://<KVM-Host-IP>:32464

```

Beispiel:

```
http://192.168.10.122:32464

```

---

## 12. Anmeldedaten

Standardmäßig:

- **Benutzer:** `admin`
- **Passwort:** wird beim ersten Start im `awx-task` Container geloggt:

```bash
kubectl logs -n awx deployment/awx-task | grep password

```

---

## Troubleshooting

- Bei DNS-Problemen `hostAliases` im `AWX`-CR vermeiden — wird derzeit nicht unterstützt.
- Prüfe `kubectl describe pod ...` bei Pod-Fehlern
- IPv6-only Umgebungen können Probleme verursachen → ggf. IPv4 bevorzugt konfigurieren
- kubectl -n awx patch service awx-service -p '{"spec": {"ports": \[{"port": 80, "targetPort": 80, "protocol": "TCP", "nodePort": 32464}\]}}'

---

## AWX Update

```bash
kubectl apply -f awx.yaml -n awx

```

> Wichtig: Änderungen an nicht unterstützten Feldern (z. B. `hostAliases`) vermeiden.

---

Fertig! 🎉 AWX ist jetzt bereit für deine Projekte.