Environnement d'exécution
Introduction
Un environnement d’exécution (EE) ansible est un conteneur léger qui encapsule toutes les dépendances nécessaires pour exécuter des playbooks ansible de manière reproductible. Ces dépendances incluent la version d’Ansible, les collections Ansible, les rôles, la configuration d’ansible ainsi que les modules Python spécifiques.
Dans cet article nous allons créer un environment d'éxécution.
Pré-requis
- Serveur Rocky 9 - Voir Installation et configuration de Rocky Linux
- Docker - Voir Installation de docker
- Package:
-
sudo dnf install git -y
- Librairie python
-
pip3 install --upgrade pip
-
pip3 install ansible ansible-runner ansible-builder
Création
Pour créer notre environnement d'exécution nous avons besoin de plusieurs fichier. Pour les détails, je vous invite à consulter les sites cités dans le paragraphe sources ci-dessous.
| Fichier | Description |
|---|---|
| execution-environment.yml | Fichier contenant la configuration de votre EE |
| requirements.txt | Liste les modules Python spécifiques nécessaires à votre EE |
| requirements.yml | Liste les modules ansible galaxy nécessaire à votre EE |
| bindep.txt | Spécifie les paquets système nécessaires à l’exécution des tâches ansible |
Nous allons créer ces fichiers dans le dossier $HOME/ee-awx
mkdir -p $HOME/ee-awx/context
cd ee-awx
Fichiers dans le dossier context
Copier dans le dossier context, les fichiers que vous souhaitez intégrer dans votre image (scripts, certificats, ...).
Dans cet exemple nous créons le fichier dummy.sh. Ce script n'est pas nécessaire mais il nous permettra de tester notre image docker.
cat << EOF > context/dummy.sh
#!/bin/bash
echo "Congratulations, the dummy.sh file is successfully executed"
ansible --version
EOF
Créer le fichier bindep.txt
cat << EOF > bindep.txt
git-core [platform:rpm]
libssl-dev [platform:dpkg]
openssl [platform:rpm]
EOF
Créer le fichier requirements.txt
cat << EOF > requirements.txt
ansible
ansible-core
ansible-runner
psycopg2-binary
wheel
PyVmOmi
EOF
Créer le fichier requirements.yml
cat << EOF > requirements.yml
---
collections:
- ansible.posix
- community.general
EOF
Créer le fichier execution-environment.yml
cat << EOF > execution-environment.yml
version: 3
dependencies:
ansible_core:
package_pip: ansible-core
ansible_runner:
package_pip: ansible-runner
galaxy: requirements.yml
python: requirements.txt
system: bindep.txt
images:
base_image:
name: quay.io/centos/centos:stream9
additional_build_steps:
prepend_base:
- RUN yum install -y git
append_final:
#- COPY gmolabCA.crt /etc/pki/ca-trust/source/anchors/gmolabCA.crt
#- RUN /usr/bin/update-ca-trust
# example not needed
- COPY --chmod=755 dummy.sh ./dummy.sh
EOF
Construire l'image
ansible-builder build --verbosity 3 --tag gmouchet/awx-ee-example:1.0
Tester l'image
docker run --name test --rm gmouchet/awx-ee-example:1.0 /bin/bash -c './dummy.sh'
Congratulations, the dummy.sh file is successfully executed
Tester l'image avec un playbook
Télécharger l'archive demo
curl https://gmodocs.dyndns.org/files/demo.tar.gz -o /tmp/demo.tar.gz
Décompresser l'archive
cd /tmp
tar zxvf demo.tar.gz
Tester le playboock
cd /tmp/demo
ansible-runner run ./ -i inventory/hosts -p test.yml --container-image gmouchet/awx-ee-example:1.0 --process-isolation --process-isolation-executable docker
PLAY [all] *********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Get the hostname] ********************************************************
ok: [localhost] => {
"msg": "Hostname: e1322765417e"
}
TASK [Get inventory hostname] **************************************************
ok: [localhost] => {
"msg": "Inventory Hostname: localhost"
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Sources
- Introduction to Execution Environments
- Stéphane Robert EE-AWX
- An Ansible execution environment for AWX project
- Creating custom EE for AWX
- awx-build-custom-ee
- additional_build_steps
| Version | Date | Change | Auteur |
|---|---|---|---|
| 1.0 | 24.05.2025 | Création | GMo |