🚀 Création d'un Execution Environment (EE) personnalisé pour AWX
Cette documentation explique comment créer, builder et déployer un environnement d'exécution (EE) sur mesure pour AWX afin d'inclure des dépendances spécifiques (Proxmox, Docker Compose v2) non présentes dans l'image de base.
- Base OS : CentOS Stream 9 (Image officielle AWX-EE)
- Registry : Harbor (docker-registry.numericare.fr)
- Outils : Docker CLI, Ansible-Galaxy
1. Pourquoi un EE personnalisé ?
L'image de base awx-ee:latest est minimaliste. Pour piloter l'infrastructure Numericare, nous avons besoin de :
- proxmoxer : Librairie Python pour l'API Proxmox.
- community.docker (v3.4.0+) : Pour le support de
docker_compose_v2. - community.proxmox : Pour la gestion des LXC et VMs.
2. Le Dockerfile de construction
Nous utilisons la méthode manuelle (Dockerfile) plutôt qu'Ansible-Builder pour éviter les conflits de dépendances lourdes (oVirt, etc.) et optimiser l'espace disque.
FROM quay.io/ansible/awx-ee:latest
# Passage en root pour l'installation système
USER root
# 1. Installation de PIP et des librairies Python requises
RUN dnf install -y python3-pip && \
python3 -m pip install --no-cache-dir proxmoxer requests
# 2. Installation des collections Ansible dans le répertoire GLOBAL
# Note : le flag -p est crucial pour que l'utilisateur non-root d'AWX y accède
RUN ansible-galaxy collection install community.docker:'>=3.4.0' -p /usr/share/ansible/collections --upgrade && \
ansible-galaxy collection install community.proxmox -p /usr/share/ansible/collections
# Repassage sur l'utilisateur AWX par défaut (UID 1000)
USER 1000
3. Build et Push vers Harbor
Commandes à exécuter depuis le nœud de build (ex: squall) :
# 1. Connexion Ă la registry
docker login docker-registry.numericare.fr
# 2. Construction de l'image
docker build -t docker-registry.numericare.fr/private/custom-awx-ee:v1.0 .
# 3. Envoi sur Harbor
docker push docker-registry.numericare.fr/private/custom-awx-ee:v1.0
4. Configuration dans AWX
Une fois l'image sur Harbor, il faut la déclarer dans l'interface AWX :
- Créer le Credential :
- Type : Container Registry
- URL :
https://docker-registry.numericare.fr
- Créer l'Execution Environment :
- Image :
docker-registry.numericare.fr/private/custom-awx-ee:v1.0 - Pull :
Always pull - Registry Credential : Sélectionner celui créé à l'étape précédente.
- Image :
- Assigner : Modifier le Job Template pour utiliser ce nouvel EE.
⚠️ Troubleshooting & Pièges
1. Espace disque saturé (No space left on device)
Le build d'images crée beaucoup de cache. Sur le nœud de build, lancer régulièrement :
docker system prune -af2. ModuleNotFoundError (permissions)
Si Ansible ne trouve pas une collection alors qu'elle est installée, vérifier qu'elle a été installée avec USER root dans /usr/share/ansible/collections et non dans /root/.ansible.
3. Erreur de syntaxe Dockerfile
Attention aux espaces après l'anti-slash (\ ). Il est préférable de mettre les commandes RUN sur une seule ligne pour éviter les erreurs command not found.