2.0 KiB
2.0 KiB
| paths | ||||
|---|---|---|---|---|
|
AWX Integration (Ansible for Aether)
Overview
- AWX: open-source Ansible platform. Debian 12 VM with K3s + AWX Operator.
- Lab VM:
awxon oc-node-02, IP 192.168.102.161/22 (VLAN 69). - AWX URL:
http://192.168.102.161:30080(K3s NodePort, not Traefik ingress). deploy-awxscript:--deploy,--status,--heal,--configure,--join-aether,--cleanup,--doctor.
Live job output
Capture AWX job output while running (don't just poll status):
curl -sk http://192.168.102.161:30080/api/v2/jobs/{JOB_ID}/stdout/?format=txt \
-H "Authorization: Bearer $AWX_TOKEN"
Aether extra vars
Aether passes ffsdn_ prefixed vars: ffsdn_instance_name, ffsdn_instance_ip,
ffsdn_cluster_id, ffsdn_cluster_name, ffsdn_deployed_by, ffsdn_image_os,
ffsdn_image_release, ffsdn_image_alias.
It does NOT pass: vm_name, vm_ip, environment, owner, cost_center.
Playbook pattern: Incus REST API, not SSH
- AWX cannot SSH to containers on incusbr0 (not routable, nftables blocks).
- Use
urimodule with client cert for file push + exec. - Cert at
/runner/project/incus-client.crt(EE mounts at/runner/project/, NOT/var/lib/awx/projects/).
Manual project (local_path)
- EE containers can't reach private git repo.
- Use
scm_type: "",local_path: "incus-contrib". - Push playbooks to AWX task pod at
/var/lib/awx/projects/incus-contrib/playbooks/.
Gotchas
- Self-referencing vars:
vm_ip: "{{ vm_ip | default('') }}"causes infinite recursion. Useffsdn_*vars directly. environmentis reserved: resolves to[]as extra var.- AWX config API bug:
PUT /api/clusters/{id}/awx-configreturns "Invalid cluster ID" (v6.4.317). Use the Aether UI instead (cluster Settings tab or per-blueprint AWX template IDs). - Lifecycle hooks: post-deploy failure -> auto-rollback (instance deleted). Decommission failure does NOT block deletion.