Die Kosten der Komplexität: Ansible AWX
05 May 2024
Ansible Navigator
Ansible Navigator ist eine containerbasierte textbasierte Schnittstelle, die entwickelt wurde, um verschiedene Komponenten von Ansible zu verwalten. Im Wesentlichen fungiert es als Wrapper und bietet eine einheitliche Schnittstelle für das Ansible-Ökosystem. Die Verwendung von Ansible Navigator erfordert anfangs keine Container-Nutzung. Daher verwenden wir den Parameter --ee=false
.
Zu den Modulen von Ansible Navigator gehören:
run
: Führt ein Playbook aus.replay
: Zeigt das Ergebnis eines zuvor ausgeführten Playbooks an.inventory
: Zeigt ein spezifisches Ansible-Inventar an und beschreibt Hosts, Gruppen und Variablen.config
: Zeigt die Konfiguration von Ansible und einzelne Parameter an.settings
: Zeigt die aktuelle Konfiguration von Ansible Navigator und einzelne Parameter an.lint
: Stellt sicher, dass Playbooks und Rollen ordnungsgemäß formatiert sind (Linting).
Lassen Sie uns die praktische Verwendung von Ansible Navigator erkunden.
Run: Ausführen eines Ansible Playbooks
Ein Ansible-Playbook kann mithilfe von Ansible Navigator wie folgt ausgeführt werden:
ansible-navigator --ee=false run playbook-print_all_vars.yml -i inventory.yml
Im Vergleich zur Ausgabe von Ansible bietet Ansible Navigator eine deutlich verbesserte Lesbarkeit:
Play name Ok Changed Unreachable Failed Skipped Ignored In progress Task count Progress
0│PRINT DEBUG VARIABLES 6 0 0 0 0 0 0 6 Complete
Wir können Playbook-Details anhand der Zeilennummer (0
in unserem Fall) oder :
gefolgt von der Zeilennummer (:0 in unserem Fall) erhalten.
Darüber hinaus können Aufgabenlisten und -details angezeigt werden:
Result Host Number Changed Task Task action Duration
0│Ok localhost 0 False Gathering Facts gather_facts 1s
1│Ok localhost 1 False PRINT MODULE VARIABLES (vars) ansible.builtin.debug 0s
2│Ok localhost 2 False PRINT ENVIRONMENT VARIABLES (environmeansible.builtin.debug 0s
3│Ok localhost 3 False PRINT GROUP NAMES VARIABLES (group_namansible.builtin.debug 0s
4│Ok localhost 4 False PRINT GROUPS VARIABLES (groups) ansible.builtin.debug 0s
5│Ok localhost 5 False PRINT HOST VARIABLES (hostvars) ansible.builtin.debug 0s
Ähnlich können wir die Details jeder Aufgabe sehen:
Play name: PRINT DEBUG VARIABLES:1
Task name: PRINT MODULE VARIABLES (vars)
Ok: localhost ['-------------------------------------------------------------------------', '{', ' "a
0│--- ▒
1│duration: 0.042759
2│end: '2023-10-06T11:39:11.611558'
3│event_loop: null
4│host: localhost
5│play: PRINT DEBUG VARIABLES
6│play_pattern: all
7│playbook: /Users/dainese/src/patreon/ansible/Recipes/playbook-print_all_vars.yml
8│remote_addr: localhost
9│res:
10│ _ansible_no_log: null
11│ _ansible_verbose_always: true
12│ changed: false
13│ msg:
[...]
Replay: Überprüfung einer vorherigen Ausführung
Nach jeder Ausführung (run
) erstellt Ansible Navigator eine JSON-Datei mit dem Namen artifact, die eine retrospektive Analyse der Playbook-Ausführung ermöglicht.
Vorherige Playbook-Daten können mit folgendem Befehl erneut geladen werden:
ansible-navigator --ee=false replay playbook-print_all_vars-artifact-2023-10-06T11\:39\:11.912452+00\:00.json
Die Benutzeroberfläche zeigt denselben Bildschirm wie im vorherigen Absatz (run
).
Inventory: Analyse eines Inventars
Das Inventar in Ansible ist entscheidend für die Playbook-Ausführung. Viele Variablen werden auf Inventarebene definiert. Ansible Navigator bietet ein Tool zur Visualisierung der Inventarstruktur, Gruppen und Gruppen- sowie Host-variablen:
ansible-navigator --ee=false inventory -i inventory.yml
Config: Analyse der Ansible-Konfiguration
Ansible kann mit einer großen Anzahl von Parametern konfiguriert werden. Manchmal ist unklar, ob ein bestimmter Parameter richtig konfiguriert ist und daher ignoriert wird.
Wir können die Konfiguration von Ansible anzeigen, um konfigurierte Parameter, ihre Werte und wo sie konfiguriert werden können, zu überprüfen:
ansible-navigator --ee=false config
Die Ausgabe zum Parameter host_key_checking
lautet wie folgt:
Host key checking (current: False) (default: True)
0│---
1│current_config_file: None
2│current_value: false
3│default: false
4│default_value: true
5│description: Set this to "False" if you want to avoid host key checking by the underlying
6│ tools Ansible uses to connect to the host
7│env:
8│- name: ANSIBLE_HOST_KEY_CHECKING
9│ini:
10│- key: host_key_checking
11│ section: defaults
12│name: Host key checking
13│option: HOST_KEY_CHECKING
14│source: env
15│type: boolean
16│via: ANSIBLE_HOST_KEY_CHECKING
Einstellungen: Analyse der Ansible Navigator-Konfiguration
Ebenso kann die Konfiguration von Ansible Navigator analysiert werden:
ansible-navigator --ee=false settings
Lint: Formatierung von Playbooks und Rollen
Beim Schreiben von Code, unabhängig von der Sprache, stoßen wir auf die Herausforderung, Standards einzuhalten: Leerzeichen, Variablennamen, Kommentare und mehr. Linting ist der Prozess, der es uns ermöglicht, einen anerkannten Standard einzuhalten, sei es automatisch, halbautomatisch oder manuell.
Ansible Navigator ermöglicht es uns, unsere Playbooks zu standardisieren, indem es Linting durchführt:
ansible-navigator --ee=false lint *yml roles
Ich empfehle jedoch, Ansible Navigator mit den folgenden Lintern zu koppeln:
yamllint *yml roles
yamlfmt *yml roles
ansible-lint