Aller au contenu
Infrastructure as Code medium

Installer ansible-navigator et ansible-builder sur AlmaLinux 10 et Ubuntu 24.04

10 min de lecture

Logo Ansible

Trois outils suffisent pour démarrer avec les EE : Podman, ansible-navigator, ansible-builder. Cette page installe le trio sur AlmaLinux 10 (cible RHCE EX294) et Ubuntu 24.04 LTS (postes dev), pose un fichier ansible-navigator.yml minimal, et valide tout via un premier podman pull + ansible-navigator run de démo.

À la fin, votre poste exécute des playbooks Ansible dans un EE sans avoir besoin de venv local pour ansible-core.

  • Installer Podman sur AlmaLinux 10 et Ubuntu 24.04 (rootless par défaut).
  • Installer ansible-navigator via pipx (recommandé) ou dnf/apt.
  • Installer ansible-builder via pipx, version v3.1+.
  • Configurer un fichier ansible-navigator.yml projet par défaut.
  • Vérifier l’installation avec un pull EE + run de démo.
  • Distribution Linux récente : AlmaLinux 10, Rocky Linux 10, Ubuntu 24.04 LTS ou Fedora 40+.
  • Accès internet pour pull les images EE (~1 GB).
  • Python 3.11+ sur le système (présent par défaut sur ces distros).

Podman est le runtime conteneur recommandé pour les EE en 2026 (rootless natif, pas de daemon, intégration RHEL).

Fenêtre de terminal
sudo dnf install -y podman
podman --version
# → podman version 5.x.x

Vérification rapide :

Fenêtre de terminal
podman info | head -20
podman run --rm docker.io/library/hello-world

Sur WSL2 Ubuntu 24.04, l’installation Podman fonctionne avec apt natif (plus besoin du dépôt opensuse:kubic qu’on rencontrait il y a 2-3 ans). Mais un piège spécifique à WSL2 fait planter ansible-navigator au premier lancement :

Error: Execution environment support while using podman requires
a '/dev/mqueue/' directory.

WSL2 ne monte pas /dev/mqueue par défaut, et Podman en a besoin pour les POSIX message queues utilisées par les conteneurs. Le fix tient en deux lignes — automatiser le montage au démarrage de WSL :

# /etc/wsl.conf (sur Windows 11)
[boot]
command="mkdir -p /dev/mqueue && mount -t mqueue none /dev/mqueue"

Le démarrage suivant de WSL exécute la commande automatiquement (wsl --shutdown côté Windows pour forcer un reboot propre).

Sur Windows 10, la section [boot] n’est pas supportée — créer un script podman-wsl.bat à lancer manuellement après chaque démarrage :

wsl ~ -u root -d Ubuntu -e sh -c "mkdir -p /dev/mqueue && mount -t mqueue none /dev/mqueue"

Vérification : mountpoint /dev/mqueue doit retourner /dev/mqueue is a mountpoint. Sinon, ansible-navigator plantera silencieusement avec Configuration failed.

Méthode recommandée 2026 : pipx — isole l’installation dans son propre venv, pas de pollution du Python système.

Fenêtre de terminal
# Installer pipx si absent
sudo dnf install -y pipx # AlmaLinux/RHEL
sudo apt-get install -y pipx # Ubuntu
pipx ensurepath
exec $SHELL # recharger le PATH
# Installer ansible-navigator
pipx install ansible-navigator
ansible-navigator --version
# → ansible-navigator 25.x.x

Méthodes alternatives :

Fenêtre de terminal
# Activer le repo ansible-automation-platform (Subscription Red Hat) ou EPEL
sudo dnf install -y ansible-navigator

Même logique que pour navigator :

Fenêtre de terminal
pipx install ansible-builder
ansible-builder --version
# → 3.1.0 ou supérieur

Un fichier ansible-navigator.yml placé à la racine d’un projet fixe l’EE par défaut, le mode d’exécution, le container engine, les volumes mounts.

ansible-navigator.yml
ansible-navigator:
execution-environment:
image: quay.io/ansible/creator-ee:latest
container-engine: podman
pull:
policy: missing # missing | always | never | tag
volume-mounts:
- src: "{{ HOME }}/.ssh"
dest: "/home/runner/.ssh"
options: "ro,Z"
mode: stdout # stdout | interactive
playbook-artifact:
enable: false # mettre à true en CI pour replay
logging:
level: warning # debug | info | warning | error

Trois clés à comprendre :

  • pull.policy: missing : l’image n’est pull que si absente localement. Bon défaut en dev. always force le pull à chaque run (utile en CI pour la fraîcheur).
  • volume-mounts : par défaut, le conteneur n’a pas accès à votre ~/.ssh. Sans le mount, vos clés ne sont pas disponibles dans l’EE → SSH échoue. :Z = label SELinux pour le bind mount.
  • mode : stdout pour CI/scripts, interactive pour debug TUI.

Fichier cherché dans cet ordre :

  1. $ANSIBLE_NAVIGATOR_CONFIG (variable d’env).
  2. ./ansible-navigator.yml (cwd).
  3. ./ansible-navigator.yaml.
  4. ~/.ansible-navigator.yml.
  5. ~/.ansible-navigator.yaml.
Fenêtre de terminal
# 1. Pull l'EE community
podman pull quay.io/ansible/creator-ee:latest
# 2. Vérifier
podman images | grep creator-ee
# 3. Créer un playbook minimal
cat > ping.yml <<'EOF'
---
- hosts: localhost
gather_facts: false
tasks:
- name: Ping local
ansible.builtin.ping:
EOF
# 4. Exécuter dans l'EE
ansible-navigator run ping.yml -m stdout

Sortie attendue :

PLAY [localhost] *********
TASK [Ping local] *********
ok: [localhost]
PLAY RECAP ****************
localhost : ok=1 changed=0 unreachable=0 failed=0

🎯 Bravo — votre premier playbook a tourné dans un EE.

SymptômeCause probableSolution
podman: command not foundPaquet non installésudo dnf install -y podman
ansible-navigator: command not found après pipx installPATH non rechargépipx ensurepath ; exec $SHELL
Error: short-name resolution enforcedImage sans registre expliciteToujours utiliser quay.io/ansible/... complet
Permission denied sur volume mountSELinuxAjouter :Z à -v src:dest:Z
pull failed: 401 UnauthorizedRegistre privépodman login quay.io
  • Trio Podman + ansible-navigator + ansible-builder suffit pour tout le parcours EE.
  • pipx est la méthode d’install recommandée (isolation propre).
  • ansible-builder v3.1+ est obligatoire pour le schéma version: 3.
  • ansible-navigator.yml centralise la config projet.
  • :Z systématique sur les volume mounts en environnement SELinux.
  • pull.policy : missing en dev, always en CI.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn