Ansible (gebundenes Buch)

Das Praxisbuch für Administratoren und DevOps-Teams
ISBN/EAN: 9783836289061
Sprache: Deutsch
Umfang: 442 S.
Einband: gebundenes Buch
Wenn Sie auf Ihrer Serverfarm für Ordnung sorgen wollen, ist Ansible das Werkzeug der Wahl. Dieses Praxisbuch zeigt Ihnen, wie Sie das automatisierte Deployment Ihrer Dienste orchestrieren und so für standardisierte und dokumentierte Abläufe sorgen. Diese zentrale Konfiguration erleichtert Ihnen Betrieb und Skalierung, da Sie durch die konsequente Automatisierung Fehlerquellen reduzieren.

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.«

Axel Miesen ist zertifizierter Linux-Systemadministrator und Trainer. Seit 2001 hat er zahlreichen Schulungen zu Themen wie Linux-Shellscripting, Perl, Docker und Ansible durchgeführt.





















       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