Aller au contenu
Infrastructure as Code medium

ansible-navigator : modes interactif TUI et stdout, sous-commandes essentielles

9 min de lecture

Logo Ansible

ansible-navigator est l’outil unique qui remplace ansible-playbook quand on veut exécuter dans un EE. Il offre deux modes : TUI interactif pour le debug riche (drill-down task → host → JSON), et stdout pour la CI/CD (sortie identique à ansible-playbook classique). Cette page passe en revue les 7 sous-commandes essentielles (run, images, inventory, lint, doc, collections, config) avec exemples concrets, puis détaille la navigation clavier TUI et la fonctionnalité replay des artifacts.

À la fin, vous saurez choisir le bon mode selon le contexte et exploiter pleinement les capacités de debug de navigator.

  • Différence TUI vs stdout et quand utiliser chacun.
  • Les 7 sous-commandes principales d’ansible-navigator.
  • Navigation clavier TUI : drill-down, recherche, retour.
  • Artifacts JSON : playbook-artifact.enable et replay.
  • Variables d’environnement : ANSIBLE_NAVIGATOR_*.
ModeUsage typiqueAvantage clé
-m stdoutCI/CD, scripts, redirection logsIdentique à ansible-playbook -v
TUI (défaut)Debug local, formationDrill-down task → host → JSON

Règle : mettez mode: stdout dans votre ansible-navigator.yml projet, et passez en TUI explicitement quand vous debuggez un échec :

Fenêtre de terminal
# Mode CI/CD habituel
ansible-navigator run site.yml
# Debug d'un échec
ansible-navigator run site.yml --mode interactive
Fenêtre de terminal
ansible-navigator run site.yml \
-i inventory.yml \
--eei quay.io/ansible/creator-ee:latest \
-m stdout

Options fréquentes :

  • -i / --inventory : inventaire (peut être répété).
  • --eei / --execution-environment-image : surcharge l’EE par défaut.
  • -m / --mode : stdout ou interactive.
  • --pas / --playbook-artifact-save-as : nom du fichier artifact JSON.
  • -e / --extra-vars : variables ad-hoc.
  • --tags / --skip-tags : filtrer les tâches.
Fenêtre de terminal
ansible-navigator images --eei quay.io/ansible/creator-ee:latest

Ouvre la TUI avec 8 vues : Image information, Image layers, OS release, System packages, Ansible version, Ansible collections, Python packages, Python version. Indispensable avant de consommer un EE.

Fenêtre de terminal
ansible-navigator inventory -i inventory.yml

TUI structurée : groupes, hosts, variables. Drill-down sur un host pour voir toutes les variables résolues (group_vars, host_vars, defaults).

Fenêtre de terminal
ansible-navigator lint site.yml

Lance ansible-lint dans l’EE (la version creator-ee embarque ansible-lint). Évite les divergences entre lint local et EE de prod.

Fenêtre de terminal
ansible-navigator doc ansible.builtin.copy

TUI avec : Synopsis, paramètres typés, exemples YAML, return values. Doc embarquée dans l’EE — exactement la version qui s’exécutera.

Fenêtre de terminal
ansible-navigator collections --eei quay.io/ansible/creator-ee:latest

Liste structurée des collections + version de chacune. Plus lisible que ansible-galaxy collection list brut.

Fenêtre de terminal
ansible-navigator config dump

Affiche la configuration Ansible vue par l’EE : defaults.host_key_checking, ssh_connection.pipelining, etc. Différent de votre ansible.cfg local — c’est ce qui compte pour l’exécution.

Une fois dans la TUI, les raccourcis :

ToucheAction
0-9Sélectionner l’item numéroté
↑↓Naviguer dans une liste
(Entrée)Drill-down (entrer dans l’item)
EscRemonter d’un niveau
:doc <module>Doc d’un module à la volée
:helpAide contextuelle
:q ou :quitQuitter
/<terme>Recherche

Exemple drill-down : depuis run site.yml, vous voyez les plays (numérotés). 0 entre dans le premier play → liste des tasks. 2 entre dans la 3e task → liste des hosts. 0 entre dans le 1er host → JSON brut du résultat.

Ajoutez à ansible-navigator.yml :

ansible-navigator:
playbook-artifact:
enable: true
save-as: '{playbook_name}-artifact-{ts_utc}.json'

À chaque run, navigator écrit un artifact JSON complet (toutes les tasks, tous les hosts, toutes les sorties).

Rejouer :

Fenêtre de terminal
ansible-navigator replay site-artifact-2026-04-26T18-30-00.json

Ouvre la TUI sans réexécuter — exactement comme si vous étiez en train de regarder le run, mais à partir d’un fichier figé. Permet à un dev de partager un échec à un collègue : « tiens, voilà l’artifact, regarde l’erreur task #14 ».

VariableEffet
ANSIBLE_NAVIGATOR_EE_IMAGESurcharge l’EE par défaut
ANSIBLE_NAVIGATOR_MODEstdout ou interactive
ANSIBLE_NAVIGATOR_CONFIGChemin vers un ansible-navigator.yml
ANSIBLE_NAVIGATOR_LOG_LEVELdebug / info / warning / error

Pratique pour la CI/CD : ANSIBLE_NAVIGATOR_MODE=stdout dans le runner force la sortie texte sans toucher au fichier de config.

Scénario : une task ansible.builtin.template échoue sur web1.lab mais pas web2.lab.

  1. Lancer en TUI :

    Fenêtre de terminal
    ansible-navigator run site.yml --mode interactive
  2. Drill-down : vous voyez le PLAY RECAP — web1.lab : failed=1. Tapez 0 pour entrer dans les plays, sur le play, descendez sur la task qui a [*] (status fail).

  3. Voir le JSON : tapez sur la task → liste des hosts. Tapez 0 sur web1.lab → JSON brut de l’erreur.

  4. Comparer : Esc, sélectionnez web2.lab, comparez les variables résolues.

  5. Rejouer après fix : modifiez le template, :q, relancez.

🔍 Observation : ce workflow — voir le JSON brut directement, comparer hosts — est beaucoup plus rapide que ansible-playbook -vvv qui noie l’info utile.

Le lab ee/hello (labs/ee/hello/README.md) inclut les exercices comparant ansible-playbook classique vs ansible-navigator run (mode stdout puis TUI), avec 6 tests pytest validant la structure (config navigator + EE pinning).

  • -m stdout pour CI/CD, TUI pour debug local.
  • 7 sous-commandes : run, images, inventory, lint, doc, collections, config.
  • Drill-down TUI : task → host → JSON, parfait pour debug.
  • Artifacts JSON + replay : partager un échec sans relancer.
  • ANSIBLE_NAVIGATOR_MODE=stdout dans le CI pour forcer la sortie texte.
  • config dump affiche la config effective dans l’EE (différente du local).

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