Personnalisation d'une Execution Environment (EE) AWX/Ansible
Voici comment créer et personnaliser une Execution Environment (EE) pour AWX ou Ansible Automation Platform:
1. Prérequis
-
Podman ou Docker installé
-
Accès à un registre de conteneurs (Docker Hub, Quay.io, registry privé)
-
Outil
ansible-builderinstallé (pip install ansible-builder)
2. Structure de base
Créez un répertoire avec cette structure:
my-ee/
├── execution-environment.yml # Fichier de définition principal
├── requirements.txt # Dépendances Python
├── requirements.yml # Collections Ansible
└── bindep.txt # Dépendances système
3. Fichier execution-environment.yml
Exemple de configuration:
version: 3
images:
base_image:
name: quay.io/ansible/ansible-runner:latest
dependencies:
galaxy: requirements.yml
python: requirements.txt
system: bindep.txt
additional_build_steps:
prepend: | RUN whoami
RUN cat /etc/os-release
append:
- RUN pip install --upgrade pip
- COPY custom_files/ /custom/
- RUN echo "Image customisée le $(date)" > /built.txt
4. Personnalisations possibles
a) Ajouter des collections Ansible (requirements.yml)
collections:
- name: community.general
- name: amazon.aws
- name: my_namespace.my_collection
source: https://my-private-galaxy/api/
b) Ajouter des modules Python (requirements.txt)
requests
boto3>=1.20.0
azure-identity
c) Installer des paquets système (bindep.txt)
gcc [compile]
git [platform:rpm]
python3-dev [compile]
jq [platform:rpm]
d) Commandes personnalisées
Dans additional_build_steps.append:
- RUN dnf install -y openssl && dnf clean all # Pour CentOS/RHEL
- RUN apt-get update && apt-get install -y jq && rm -rf /var/lib/apt/lists/* # Pour Debian/Ubuntu
5. Construction de l'image
ansible-builder build -t my-custom-ee:latest -v 3
6. Tester l'image localement
podman run -it --rm my-custom-ee:latest ansible --version
podman run -it --rm my-custom-ee:64 pip list
7. Pousser vers un registry
podman tag my-custom-ee:latest quay.io/mynamespace/my-custom-ee:latest
podman push quay.io/mynamespace/my-custom-ee:latest
8. Utiliser dans AWX
-
Allez dans Administration → Execution Environments
-
Cliquez sur Add
-
Entrez:
-
Nom: "my-custom-ee"
-
Image:
quay.io/mynamespace/my-custom-ee:latest -
Options de pull si nécessaire
-
Conseils avancés
-
Optimisation des builds:
-
Utilisez des mirrors pour les paquets
-
Créez des builds multi-stage pour réduire la taille
-
-
Sécurité:
-
Signez vos images avec cosign
-
Analysez avec Trivy ou Grype
-
-
Debug:
ansible-builder inspect my-custom-ee:latest podman run -it --entrypoint /bin/bash my-custom-ee:latest
-
Variables d'environnement:
additional_build_steps: append: - ENV MY_VAR=value
Cette EE customisée pourra ensuite être sélectionnée dans vos templates de job AWX.