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 tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn