Ansible (gebundenes Buch)
Aus dem Inhalt:
Basiseinrichtung und Inventory Management
Ad-hoc-Kommandos und Patterns
YAML: Die Konfigurations- und Serialisierungssprache
Playbooks, Tasks und Plays
Modularisierung mit Rollen und Includes
Die Modul-Bibliothek
Webinterfaces: Ansible AWX/Tower und mehr
Ansible und Docker
Callback Plugins
Beispielkonfigurationen und Best Practices
Die Fachpresse zur Vorauflage:
LINUX MAGAZIN: »Ein unverzichtbares Kompendium für alle, die sich in die Automatisierung mit Ansible einarbeiten wollen oder müssen.«
1.1 ... Was ist Ansible? ... 23
1.2 ... Was ist Ansible nicht? ... 25
1.3 ... Geschichte und Versionen ... 26
1.4 ... Setup/Laborumgebung ... 27
1.5 ... Ansible-Installation auf dem Control Host ... 31
1.6 ... Authentifizierung und Autorisierung auf den Target Hosts ... 35
1.7 ... Einrichten der SSH-Public-Key-Authentifizierung ... 36
1.8 ... Ein Ad-hoc-Test ohne jegliche Konfiguration ... 37
1.9 ... Noch ein Hinweis zur Migration von älteren Versionen ... 39
2.1 ... Verzeichnisstruktur einrichten ... 41
2.2 ... Grundkonfiguration (»ansible.cfg«) ... 42
2.3 ... Erstellen und Verwalten eines statischen Inventorys ... 43
2.4 ... Inventory-Aliasse und Namensbereiche ... 46
2.5 ... Jenseits von Ping ... 47
2.6 ... Ein etwas komplexeres Beispiel ... 50
2.7 ... Alternative bzw. mehrere Inventorys ... 51
3.1 ... Ad-hoc-Kommandos ... 55
3.2 ... Use Cases jenseits von »command« und »shell« ... 57
3.3 ... Idempotenz ... 57
3.4 ... Interne Funktionsweise ... 59
3.5 ... Die Ansible-Konsole ... 62
3.6 ... Patterns zum Adressieren von Hosts ... 63
4.1 ... Syntax und Struktur ... 65
4.2 ... YAML-Files editieren ... 66
4.3 ... Listen und Maps ... 68
4.4 ... Verschachtelte Strukturen ... 69
4.5 ... Textpassagen und Block-Ausdrücke ... 70
4.6 ... Das Nichts in YAML ... 71
4.7 ... Anchors und References ... 72
5.1 ... Hallo Ansible -- das allererste Playbook ... 73
5.2 ... Formulierung von Tasks ... 77
5.3 ... Beenden von Plays ... 79
5.4 ... Der problematische Doppelpunkt ... 79
5.5 ... Fehlerbehandlung, Retry-Files ... 80
5.6 ... Tags ... 82
5.7 ... Das Kommando »ansible-playbook« ... 83
5.8 ... Eine exemplarische Apache-Installation ... 85
5.9 ... Handler: Tasks nur bei Changes durchführen ... 89
6.1 ... Variablen ... 95
6.2 ... Registrierte Variablen ... 104
6.3 ... Facts und implizite Variablen ... 108
6.4 ... Bedingte Ausführung mit »when« ... 114
6.5 ... Systemunterschiede ausgleichen -- wie denn jetzt? ... 115
6.6 ... Jinja und Templates ... 123
6.7 ... Variablentests ... 130
6.8 ... Schleifen ... 132
6.9 ... Fehlerbehandlung mit »failed_when« und »ignore_errors« ... 143
6.10 ... Blocks (und noch mal Fehlerbehandlung) ... 144
6.11 ... Asynchrone Ausführung ... 146
6.12 ... Lokale Tasks ... 148
6.13 ... Lookup-Plugins ... 150
6.14 ... Umgebungsvariablen setzen ... 152
7.1 ... Collections ... 155
7.2 ... Module ... 159
7.3 ... Module zur Kommandoausführung ... 160
7.4 ... Module zur Paketverwaltung ... 161
7.5 ... Module zur Verwaltung von Dateien und Dateiinhalten ... 163
7.6 ... Module für weitere typische Verwaltungsaufgaben ... 168
7.7 ... Module zur Interaktion mit Netzwerk-Services ... 170
7.8 ... Spezialmodule (Kontrollflusssteuerung etc.) ... 171
8.1 ... Erstellung und Verwendung von Rollen ... 175
8.2 ... Das Online-Repository Ansible Galaxy ... 182
8.3 ... Verwendung von Imports/Includes ... 182
8.4 ... Noch mal Apache ... 186
8.5 ... Dokumentation ... 190
8.6 ... Wiederverwendung von Rollen ... 194
9.1 ... Vorbereitungen zum Betrieb ... 199
9.2 ... Ansible Configuration Management Database (ansible-cmdb) ... 202
9.3 ... Traefik und Gitea ... 204
9.4 ... Ansible AWX ... 210
9.5 ... Polemarch ... 214
9.6 ... Jenkins ... 216
9.7 ... ARA ... 219
9.8 ... Weitere, hier nicht näher betrachtete Möglichkeiten ... 220
9.9 ... Laborumgebung: nicht mehr benötigte Anwendungen beenden ... 221
10.1 ... Ansible Vault ... 223
10.2 ... Debugging und Troubleshooting ... 233
10.3 ... Untersuchen von Konfigurationseinstellungen ... 247
10.4 ... Playbooks beschleunigen mit Pipelining ... 247
10.5 ... Die sprechende Kuh ... 248
10.6 ... Ansible im Pull-Mode ... 249
11.1 ... Installation von Docker ... 255
11.2 ... Docker-Module ... 257
11.3 ... Eine Beispielanwendung ... 264
11.4 ... Ansible und Docker Compose ... 268
11.5 ... Das »docker«-Connection-Plugin ... 272
11.6 ... Erstellen von Images ... 273
12.1 ... Das Kommando »ansible-inventory« ... 281
12.2 ... Verschachtelte Gruppen ... 282
12.3 ... »On the fly«-Inventorys erstellen mit »add_host« ... 283
12.4 ... Dynamische Gruppen mit »group_by« ... 284
12.5 ... Dynamische bzw. externe Inventorys ... 287
13.1 ... Hetzner Cloud ... 294
13.2 ... AWS EC2 ... 299
14.1 ... Administrierst du noch oder orchestrierst du schon? ... 307
14.2 ... Viele Target Hosts zum Testen ... 308
14.3 ... Die Abarbeitungsreihenfolge beeinflussen ... 310
14.4 ... Delegierung ... 318
15.1 ... Ein Control Host auf Windows-Basis ... 323
15.2 ... WinRM ... 327
15.3 ... Vorbereitungen auf dem Control Host ... 328
15.4 ... Voraussetzungen auf der Windows-Seite und WinRM-Setup ... 329
15.5 ... Setup mit Active Directory/Kerberos ... 330
15.6 ... WinRM-Troubleshooting ... 332
15.7 ... Windows-Module ... 333
16.1 ... Ausgabe-Plugins ... 337
16.2 ... Sonstige Callback-Plugins ... 343
17.1 ... Namespaces, Namen und Einrichtung eines Collection-Projektes ... 345
17.2 ... Playbooks in Collections ... 347
17.3 ... Rollen in Collections ... 348
17.4 ... Module in Collections ... 349
17.5 ... Plugins in Collections ... 362
17.6 ... Collections deponieren und installieren ... 364
18.1 ... Vorbereitungen und Einrichtung ... 367
18.2 ... Erste Schritte ... 369
18.3 ... Entwickeln ... 371
18.4 ... Testen mit dem Ansible-Verifier ... 373
18.5 ... Testen mit dem Testinfra-Verifier ... 375
18.6 ... Der komplette Testzyklus ... 376
18.7 ... Ausblick und Fazit ... 376
19.1 ... Eine empfehlenswerte »ansible.cfg« ... 379
19.2 ... Ein neues Projekt beginnen ... 380
19.3 ... Einen Task in Abhängigkeit von einem vorhergehenden Task ausführen ... 380
19.4 ... Einen Task ausführen, wenn der Host in einer bestimmten Gruppe ist ... 382
19.5 ... In einer Liste von Maps suchen ... 382
19.6 ... Erweiterung von Maps oder Listen während der Laufzeit ... 383
19.7 ... Die Elemente einer Liste modifizieren und verbinden ... 385
19.8 ... Passwörter und Passwort-Hashes generieren ... 386
19.9 ... Einfache Installer bauen ... 387
19.10 ... IP-Adresse eines Target Hosts bestimmen ... 389
19.11 ... firewalld managen ... 392
19.12 ... Linux-Software-Updates einspielen ... 394
19.13 ... Ansible über einen Gateway- bzw. Jumphost ... 397
19.14 ... Host-spezifische Ressourcen verwalten ... 397
20.1 ... Lange laufende Tasks verfolgen ... 401
20.2 ... Abarbeitung einer Rolle beenden ... 402
20.3 ... Schleifen über Blöcke ... 404
20.4 ... Locking bei konkurrierenden Playbook-Aufrufen ... 405
20.5 ... Fazit ... 406
A ... Projektspezifische Umgebungsvariablen mit »direnv« ... 409
B ... SSH (Secure Shell) ... 413
C ... Reguläre Ausdrücke ... 429