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-builder installé (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

  1. Allez dans Administration → Execution Environments

  2. Cliquez sur Add

  3. Entrez:

    • Nom: "my-custom-ee"

    • Image: quay.io/mynamespace/my-custom-ee:latest

    • Options de pull si nécessaire

Conseils avancés

  1. Optimisation des builds:

    • Utilisez des mirrors pour les paquets

    • Créez des builds multi-stage pour réduire la taille

  2. Sécurité:

    • Signez vos images avec cosign

    • Analysez avec Trivy ou Grype

  3. Debug:

ansible-builder inspect my-custom-ee:latest podman run -it --entrypoint /bin/bash my-custom-ee:latest

  1. 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.

Retour à la liste