Each component README now links to its corresponding Redmine tickets (closed for completed work, open for pending items) for bidirectional traceability between code and system of record.
3.2 KiB
3.2 KiB
AWX — tsys-awx.knel.net
Ansible AWX deployment on a dedicated k3s single-node VM.
Access
| URL | http://tsys-awx.knel.net (LAN) or http://100.91.39.53 (Tailscale) |
| Port | 80 (LoadBalancer via k3s ServiceLB) |
| User | admin |
| Password | REDACTED_PASSWORD (fleet standard) |
Architecture
tsys-awx (VMID 600 on pfv-tsys6)
├── k3s v1.36.2+k3s1 (single-node, no Traefik)
├── AWX Operator 2.19.1 (manages the AWX lifecycle)
└── AWX instance "tsys-awx"
├── AWX web (UI/API)
├── AWX task (Celery workers)
├── PostgreSQL 15 (bundled, 8 GiB PVC on local-path)
├── Redis (ephemeral)
└── ServiceLB (binds port 80 to host IP)
VM Resources
| Resource | Value |
|---|---|
| Host | pfv-tsys6 (2× Xeon E5530, 126 GB RAM) |
| vCPU | 4 (2 sockets × 2 cores) |
| RAM | 12 GB |
| Disk | 60 GB (D5 on tsys4 NFS) |
| OS | Debian 13 trixie |
| Network | 192.168.3.200 (LAN), 100.91.39.53 (Tailscale) |
Files
| File | Purpose |
|---|---|
install-k3s.sh |
Install k3s single-node (no Traefik) |
deploy-awx.sh |
Deploy AWX Operator 2.19.1 + AWX instance |
verify-awx.sh |
Verify deployment status + access |
namespace.yaml |
Kubernetes namespace manifest |
awx-instance.yaml |
AWX Custom Resource (CR) manifest |
Deployment (from scratch)
# 1. Push scripts to VM
for f in awx/install-k3s.sh awx/deploy-awx.sh awx/verify-awx.sh \
awx/namespace.yaml awx/awx-instance.yaml; do
VM_IP=100.91.39.53 VM_USER=localuser bash tests/remote.sh vm \
"sudo tee /tmp/awx/$(basename $f) > /dev/null" < "$f"
done
# 2. Install k3s
VM_IP=100.91.39.53 VM_USER=localuser bash tests/remote.sh vm \
"sudo bash /tmp/awx/install-k3s.sh"
# 3. Deploy AWX
VM_IP=100.91.39.53 VM_USER=localuser bash tests/remote.sh vm \
"sudo bash /tmp/awx/deploy-awx.sh"
# 4. Verify
VM_IP=100.91.39.53 VM_USER=localuser bash tests/remote.sh vm \
"bash /tmp/awx/verify-awx.sh"
Operating
# kubectl access
sudo k3s kubectl -n awx get pods
sudo k3s kubectl -n awx logs -f deployment/awx-operator-controller-manager
# Restart AWX instance
sudo k3s kubectl -n awx delete awx tsys-awx # operator will recreate
# Get admin password
sudo k3s kubectl -n awx get secret awx-admin-password -o jsonpath='{.data.password}' | base64 -d
Known Issues
- kube-rbac-proxy image: The AWX Operator 2.19.1 references
gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0which was removed from GCR. The deploy script patches this toquay.io/brancz/kube-rbac-proxy:v0.15.0. - Image pulls are slow: First deployment pulls ~2 GB of container images. Postgres image alone is ~400 MB and takes several minutes.
- Disk space: AWX + k3s uses ~10 GB of the 60 GB disk. PostgreSQL data
grows over time — monitor
df -h /.