
Ansible
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
Mit Ansible sorgen Sie auf Ihrer Serverfarm für Ordnung. Eine rein manuelle Administration von Servern bzw. Konfiguration kann sehr fehleranfällig, aufwendig und schlecht nachvollziehbar sein. Die Lösung ist eine IT-Automations-Engine wie Ansible, mit der Admins ihre IT-Infrastruktur organisieren. In diesem Buch stellt Ihnen Axel Miesen Ansible vor und zeigt Ihnen praxisnah, wie Sie das automatisierte Deployment Ihrer Dienste orchestrieren und für standardisierte und dokumentierte Abläufe sorgen.
Von der Einrichtung bis zum Rollout lernen Sie, wie Sie Ihre IT mit Ansible besser administrieren. Dank zentraler Konfiguration und konsequenter Automatisierung vereinfachen Sie den Betrieb und die Skalierung Ihrer Infrastruktur und reduzieren Fehlerquellen. An einem Beispielszenario stellt Ihnen der Ansible-Profi alle Themen rund um das Open-Source-Automatisierungswerkzeug vor. Playbooks und Konfigurationsdateien stehen Ihnen ebenso zum Download bereit wie auch Docker-Container zum Testen und Ausprobieren.
- Von den Grundlagen zum orchestrierten Deployment
- Playbooks schreiben, verstehen und debuggen
- Best Practices zur Konfigurationsverwaltung, Docker-Integration und Modularisierung
- Neu in der zweiten Auflage: Collections, Ansible und die Cloud, Entwickeln und Testen mit Molecule, Webinterfaces: nachträgliche Analyse mit ARA
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
More details
Other editions
Additional editions

Person
ISNI: 0000 0005 1601 7461
Content
- Intro
- Aus dem Lektorat
- Inhaltsverzeichnis
- Vorwort
- Über dieses Buch
- 1 Einführung und Installation
- 1.1 Was ist Ansible?
- 1.2 Was ist Ansible nicht?
- 1.3 Geschichte und Versionen
- 1.4 Setup/Laborumgebung
- 1.5 Ansible-Installation auf dem Control Host
- 1.6 Installation via PIP (+ Virtualenv)
- 1.7 Authentifizierung und Autorisierung auf den Target Hosts
- 1.8 Einrichten der SSH-Public-Key-Authentifizierung
- 1.9 Ein Ad-hoc-Test ohne jegliche Konfiguration
- 1.10 Noch ein Hinweis zur Migration von älteren Versionen
- 2 Basiseinrichtung und erstes Inventory-Management
- 2.1 Verzeichnisstruktur einrichten
- 2.2 Grundkonfiguration (»ansible.cfg«)
- 2.3 Erstellen und Verwalten eines statischen Inventorys
- 2.4 Konfigurationseinstellungen vs. Parameter vs. .?
- 2.5 Inventory-Aliasse und Namensbereiche
- 2.6 Jenseits von Ping
- 2.7 Ein etwas komplexeres Beispiel
- 2.8 Alternative bzw. mehrere Inventorys
- 3 Ad-hoc-Kommandos und Patterns
- 3.1 Ad-hoc-Kommandos
- 3.2 Use Cases jenseits von »command« und »shell«
- 3.3 Idempotenz
- 3.4 Interne Funktionsweise
- 3.4.1 Parallele Ausführung
- 3.4.2 Persistente Verbindungen
- 3.4.3 Was passiert beim Aufruf eines Moduls?
- 3.5 Die Ansible-Konsole
- 3.6 Patterns zum Adressieren von Hosts
- 4 Die Konfigurations- und Serialisierungssprache YAML
- 4.1 Syntax und Struktur
- 4.2 YAML-Files editieren
- 4.3 Syntaktische Überprüfung
- 4.4 Listen und Maps
- 4.5 Verschachtelte Strukturen
- 4.6 Textpassagen und Block-Ausdrücke
- 4.7 Das Nichts in YAML
- 4.8 Anchors und References
- 5 Playbooks und Tasks: die Grundlagen
- 5.1 Hallo Ansible - das allererste Playbook
- 5.2 Formulierung von Tasks
- 5.3 Beenden von Plays
- 5.4 Der problematische Doppelpunkt
- 5.5 Fehlerbehandlung, Retry-Files
- 5.6 Tags
- 5.7 Das Kommando »ansible-playbook«
- 5.8 Eine exemplarische Apache-Installation
- 5.8.1 Schritt für Schritt
- 5.8.2 Das komplette Playbook
- 5.8.3 »--start-at-task«, »--check«, »--diff«
- 5.9 Handler: Tasks nur bei Changes durchführen
- 5.9.1 Schritt für Schritt
- 5.9.2 Handler
- 5.9.3 Das komplette Playbook bis hierhin
- 6 Playbooks und Tasks: fortgeschrittene Methoden
- 6.1 Variablen
- 6.1.1 Play Vars
- 6.1.2 Extra Vars
- 6.1.3 Präzedenzen
- 6.1.4 »set_fact«
- 6.1.5 »group_vars«
- 6.1.6 »host_vars«
- 6.1.7 »vars_files«: Variablen in beliebigen externen Dateien
- 6.1.8 Prompting
- 6.1.9 Zugriffe auf komplexe Strukturen
- 6.1.10 »assert«-Tests
- 6.2 Registrierte Variablen
- 6.3 Facts und implizite Variablen
- 6.3.1 Facts
- 6.3.2 Cachen von Facts
- 6.3.3 Implizite Variablen
- 6.3.4 Ein Beispiel
- 6.3.5 Externe Informationsbeschaffer: »facter« und »ohai«
- 6.3.6 Noch nicht genug Fakten? »/etc/ansible/facts.d«!
- 6.4 Bedingte Ausführung mit »when«
- 6.5 Systemunterschiede ausgleichen - wie denn jetzt?
- 6.5.1 Die plumpe Methode
- 6.5.2 Die solide Methode
- 6.5.3 Die trickreiche Methode
- 6.5.4 Die modulare Methode
- 6.5.5 Das komplette Playbook bis hierhin
- 6.6 Jinja und Templates
- 6.6.1 Begriffsklärung: Templates und Template-Engines
- 6.6.2 Eine individuelle Startseite für unsere Apache-Server
- 6.6.3 Schnelles Testen von Jinja-Templates
- 6.6.4 Jinja-Syntax: Ausgabeausdrücke, Anweisungen, Kommentare
- 6.6.5 Filter
- 6.6.6 Whitespace-Kontrolle
- 6.6.7 Macros
- 6.7 Variablentests
- 6.8 Lookup-Plugins
- 6.9 Schleifen
- 6.9.1 Iteration über eine Liste mit »with_items« oder »with_list«
- 6.9.2 Iteration über eine Map mit »with_dict«
- 6.9.3 Iteration über eine generierte Folge mit »with_sequence«
- 6.9.4 Schleife über die Kombination zweier Listen mit »with_nested«
- 6.9.5 Schleife über zwei parallele Listen mit »with_together«
- 6.9.6 Verschachtelte Schleife mit »with_subelements«
- 6.9.7 Tasks wiederholen mit »until«
- 6.9.8 Mehr Kontrolle mit »loop_control«
- 6.9.9 »register« + Schleife
- 6.10 Fehlerbehandlung mit »failed_when« und »ignore_errors«
- 6.11 Blöcke
- 6.12 Timeouts und asynchrone Ausführung
- 6.13 Lokale Tasks
- 6.14 Umgebungsvariablen
- 7 Module und Collections verwenden
- 7.1 Collections
- 7.1.1 Eine Minimalumgebung mit »ansible-core«
- 7.1.2 Collections managen
- 7.1.3 Der FQCN (Fully Qualified Collection Name)
- 7.1.4 Zwischenfazit
- 7.2 Module
- 7.3 Module zur Kommandoausführung
- 7.4 Module zur Paketverwaltung
- 7.5 Module zur Verwaltung von Dateien und Dateiinhalten
- 7.6 Module für weitere typische Verwaltungsaufgaben
- 7.7 Module zur Interaktion mit Netzwerk-Services
- 7.8 Spezialmodule (Kontrollflusssteuerung etc.)
- 8 Modularisierung mit Rollen und Includes
- 8.1 Erstellung und Verwendung von Rollen
- 8.1.1 Das Rollenkonzept in Ansible
- 8.1.2 Ein einfaches Beispiel für eine Rolle
- 8.1.3 Rollen in einem Playbook verwenden
- 8.1.4 Plays mit Rollen und Tasks, »pre_tasks« und »post_tasks«
- 8.1.5 Abhängigkeiten zwischen Rollen
- 8.1.6 Wählen anderer Startdateien
- 8.1.7 Erstellen neuer Rollen mit »ansible-galaxy«
- 8.2 Das Online-Repository Ansible Galaxy
- 8.3 Verwendung von Imports/Includes
- 8.3.1 »import_tasks« und »include_tasks«
- 8.3.2 »include_tasks« und Tags
- 8.3.3 Dynamisches Laden von Variablen mit »include_vars«
- 8.3.4 »import_playbook«
- 8.4 Noch mal Apache
- 8.5 Dokumentation (und Konvention)
- 8.5.1 »defaults/main.yml« als Konvention
- 8.5.2 »README.md«
- 8.6 Wiederverwendung von Rollen
- 9 Webinterfaces: AWX und mehr
- 9.1 Installation von Python-Paketen auf aktuellen Debian/Ubuntu-Systemen
- 9.2 Ansible Configuration Management Database (ansible-cmdb)
- 9.3 Vorbereitungen zum Betrieb anspruchsvollerer Anwendungen
- 9.4 Der Git-Server Gitea
- 9.4.1 Inbetriebnahme und erste Anmeldung
- 9.4.2 Einchecken unseres initialen Projekts
- 9.4.3 »README.md« hinzufügen und nützliche Git-Kommandos
- 9.5 AWX
- 9.5.1 Inbetriebnahme und erste Anmeldung
- 9.5.2 Exemplarische Verwendung
- 9.5.3 Execution Environments
- 9.5.4 Fazit
- 9.6 ARA
- 9.6.1 Test-Setup
- 9.6.2 Weitere Möglichkeiten
- 9.7 Weitere, hier nicht näher betrachtete Anwendungen
- 9.7.1 Semaphore
- 9.7.2 Polemarch
- 9.7.3 Jenkins
- 9.7.4 Rundeck
- 9.8 Nicht mehr benötigte Anwendungen beenden oder löschen
- 10 Weitere Tools und Techniken
- 10.1 Ansible Vault
- 10.1.1 Vor aller Technik
- 10.1.2 Erste Schritte
- 10.1.3 Bedeutung der Vault-ID
- 10.1.4 Weitere Vault-Kommandos
- 10.1.5 Ein Trick zum Wiederfinden von Variablen
- 10.1.6 Verschlüsseln einzelner Variablen
- 10.1.7 Mehr Bequemlichkeit bzw. Automatisierbarkeit
- 10.1.8 Bequem und relativ sicher mit einem Passwort-Client-Skript
- 10.1.9 Bequem und (möglichst) sicher mit GPG + pass
- 10.2 Debugging und Troubleshooting
- 10.2.1 Debug-Mode und Verbosity-Level
- 10.2.2 Die Lesbarkeit von Ausgaben verbessern
- 10.2.3 Gathering Facts dauert zu lange
- 10.2.4 Der Playbook-Debugger
- 10.2.5 Statische Codeanalyse mit »ansible-lint«
- 10.2.6 Check-Mode und Diff-Mode
- 10.2.7 Last, but not least: das »debug«-Modul
- 10.3 Playbooks beschleunigen mit Pipelining
- 10.4 Die sprechende Kuh
- 10.5 Ansible im Pull-Mode
- 10.5.1 »ansible-pull«: Technik und Voraussetzungen
- 10.5.2 Erste Schritte
- 10.5.3 Die ganze Lösung
- 10.5.4 Was fehlt eventuell noch?
- 11 Ansible und Docker
- 11.1 Installation von Docker
- 11.2 Docker-Module
- 11.2.1 Vorbereitungen und Vorüberlegungen
- 11.2.2 Ein erstes einfaches Beispiel
- 11.2.3 Überblick
- 11.3 Eine Beispielanwendung
- 11.4 Ansible und Docker Compose
- 11.5 Das »docker«-Connection-Plugin
- 11.6 Erstellen von Images
- 11.6.1 Erstellen von Images mit »docker build«
- 11.6.2 »ansible-bender«
- 11.6.3 Erstellen von Images mit »ansible-bender«
- 11.6.4 Fazit
- 12 Inventory-Management: fortgeschrittene Methoden
- 12.1 Das Kommando »ansible-inventory«
- 12.2 Verschachtelte Gruppen
- 12.3 Statische Inventorys im YAML-Format
- 12.4 »On the fly«-Inventorys erstellen mit »add_host«
- 12.5 Dynamische Gruppen mit »group_by«
- 12.6 Dynamische bzw. externe Inventorys
- 12.6.1 Inventory-Skripte
- 12.6.2 Verwenden von Inventory-Plugins
- 13 Ansible und die Cloud
- 13.1 Versionsprobleme und Virtualenv
- 13.2 Wohin mit Keys, Tokens, Secrets etc.?
- 13.3 Hetzner Cloud
- 13.3.1 Vorbereitungen auf dem Control Host
- 13.3.2 Vorbereitungen in der Cloud
- 13.3.3 Verwenden von Cloud-Modulen
- 13.3.4 Provisionieren von Cloud-Servern
- 13.3.5 Inventarisieren von Cloud-Servern
- 13.3.6 Weitere Möglichkeiten des Inventory-Plugins
- 13.4 AWS EC2
- 13.4.1 Vorbereitungen auf dem Control Host
- 13.4.2 Vorbereitungen in der Cloud
- 13.4.3 Verwenden von Cloud-Modulen
- 13.4.4 Provisionieren von Cloud-Servern
- 13.4.5 Inventarisieren von Cloud-Servern
- 13.4.6 Weitere Möglichkeiten des Inventory-Plugins
- 13.5 Proxmox VE
- 13.5.1 Vorbereitungen auf dem Control Host
- 13.5.2 Vorbereitungen in Proxmox VE
- 13.5.3 Ein erster Test
- 13.5.4 Provisionieren von VMs
- 13.5.5 Ausblick
- 14 Ansible als Orchestrierungswerkzeug
- 14.1 Administrierst du noch, oder orchestrierst du schon?
- 14.2 Viele Target Hosts zum Testen
- 14.3 Die Abarbeitungsreihenfolge beeinflussen
- 14.3.1 »throttle« und »order«
- 14.3.2 »serial«
- 14.3.3 Fehlerhafte Hosts im »serial«-Betrieb
- 14.3.4 Strategy-Plugins
- 14.4 Delegierung
- 15 Ansible und Windows
- 15.1 Ein Control Host auf Windows-Basis
- 15.1.1 Das Windows-Subsystem für Linux (WSL)
- 15.1.2 Cygwin
- 15.2 Windows-Targets und WinRM
- 15.3 Vorbereitungen auf dem Control Host
- 15.4 Voraussetzungen auf der Windows-Seite und WinRM-Setup
- 15.5 WinRM-Troubleshooting
- 15.6 Setup mit Active Directory/Kerberos
- 15.7 Windows-Module
- 16 Callback-Plugins
- 16.1 Stdout Callback Plugins
- 16.2 Aggregate und Notification Callback Plugins
- 17 Eigene Collections und Module erstellen
- 17.1 Namespaces, Namen und Einrichtung eines Collection-Projekts
- 17.2 Playbooks in Collections
- 17.3 Rollen in Collections
- 17.4 Module in Collections
- 17.4.1 Erste Schritte
- 17.4.2 Modulparameter
- 17.4.3 Module mit Python - exemplarische Problemstellung
- 17.4.4 Eine exemplarische Lösung
- 17.4.5 Erklärungen und weitere Möglichkeiten
- 17.4.6 Eingebettete Dokumentation
- 17.4.7 Ausblick
- 17.5 Plugins in Collections
- 17.5.1 Ein exemplarisches Callback-Plugin
- 17.5.2 Ausblick
- 17.6 Collections deponieren und installieren
- 18 Entwickeln und Testen mit Molecule
- 18.1 Vorbereitungen und Einrichtung
- 18.2 Erste Schritte
- 18.3 Entwickeln
- 18.4 Testen mit dem Ansible-Verifier
- 18.5 Testen mit dem Testinfra-Verifier
- 18.6 Der komplette Testzyklus
- 18.7 Ausblick und Fazit
- 19 Kochrezepte, How-tos und Best Practices
- 19.1 Neue Projekte
- 19.1.1 Eine empfehlenswerte »ansible.cfg«
- 19.1.2 Eine Vorlage für ein neues Projekt
- 19.2 Administratives
- 19.2.1 Einfache Installer bauen
- 19.2.2 IP-Adresse eines Target Hosts bestimmen
- 19.2.3 »Firewalld« managen
- 19.2.4 Linux-Software-Updates einspielen
- 19.2.5 Initiales Verteilen von SSH-Keys
- 19.2.6 Passwörter auf der Kommandozeile übergeben
- 19.2.7 Ansible über einen Gateway- bzw. Jumphost
- 19.3 Jinja-Magie
- 19.3.1 Erweiterung von Maps oder Listen während der Laufzeit
- 19.3.2 Die Elemente einer Liste modifizieren und verbinden
- 19.3.3 In einer Liste von Maps suchen
- 19.3.4 Ein Attribut aus einer Liste von Maps filtern
- 19.3.5 Aus Zielsystemfakten einen Report generieren
- 19.3.6 Passwörter und Passwort-Hashes generieren
- 19.4 Tasks und Kontrollfluss
- 19.4.1 Einen Task in Abhängigkeit von einem vorhergehenden Task ausführen
- 19.4.2 Einen Task ausführen, wenn der Host in einer bestimmten Gruppe ist
- 19.4.3 Redundante Modulparameter vermeiden mit »module_defaults«
- 19.4.4 Play-Hosts dynamisch festlegen
- 19.4.5 Lesen von Konfigurationsdateien
- 19.5 Sonstiges
- 19.5.1 Funktionen simulieren
- 19.5.2 Host-spezifische Ressourcen verwalten
- 20 Was könnte noch besser sein, bzw. was fehlt noch?
- 20.1 Lange laufende Tasks verfolgen
- 20.2 Abarbeitung einer Rolle beenden
- 20.3 Schleifen über Blöcke
- 20.4 Locking bei konkurrierenden Playbook-Aufrufen
- 20.5 Fazit
- 21 Projektspezifische Umgebungsvariablen mit »direnv«
- 21.1 Installation und Shell-Integration
- 21.2 Verwendung
- 21.3 Aliasse/Funktionen
- 21.4 Kommandoausführung beim Betreten
- 22 Der Passwortmanager »pass«
- 22.1 Installation und Vorbereitungen
- 22.2 Verwendung
- 22.3 Cache-Zeiten des GPG-Agenten konfigurieren
- 23 SSH (Secure Shell)
- 23.1 Serverseitige Voraussetzungen zur Nutzung von SSH
- 23.2 SSH-Client-Programme
- 23.2.1 »ssh« - Remote Shell
- 23.2.2 »scp« - Remote Copy
- 23.2.3 »sftp« - Secure FTP
- 23.3 Public-Key-Authentifizierung
- 23.3.1 Erzeugen eines SSH-Schlüsselpaares
- 23.3.2 Den öffentlichen Schlüssel auf dem Zielsystem deponieren
- 23.3.3 Public-Key-Weitergabe mit »ssh-copy-id«
- 23.4 SSH-Agenten (Linux-Client)
- 23.4.1 Start mit der Single-Shell-Methode
- 23.4.2 Start mit der Subshell-Methode
- 23.5 »PuTTY«, »PuTTYgen« und »Pageant«
- 23.6 WinSCP
- 23.7 Fortgeschrittene Konfiguration und Nutzung
- 23.7.1 Reglementierung der Zugänge
- 23.7.2 Bedingte Konfiguration mit »Match«
- 23.7.3 Client-Präferenzen
- 23.7.4 Fingerprints verifizieren
- 23.7.5 Restricted Keys
- 23.7.6 Agent-Forwarding
- 23.7.7 Transparente Sprunghosts
- 23.7.8 Escape-Sequenzen
- 23.8 pssh bzw. parallel-ssh
- 24 Reguläre Ausdrücke
- 24.1 Motivation
- 24.2 Dialekte
- 24.3 Basics
- 24.4 Reguläre Ausdrücke - Erweiterte Möglichkeiten (PCRE)
- 24.5 Erweiterte Möglichkeiten (POSIX Extended RE)
- 25 »vim« und »nano«: Tipps und Tricks
- 25.1 »vim«
- 25.2 »nano«
- Stichwortverzeichnis
- Rechtliche Hinweise
- Über den Autor
System requirements
File format: ePUB
Copy protection: without DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use a reader that can handle the file format ePUB, such as Adobe Digital Editions or FBReader – both free (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (not Kindle).
The file format ePUB works well for novels and non-fiction books – i.e., 'flowing' text without complex layout. On an e-reader or smartphone, line and page breaks automatically adjust to fit the small displays.
This eBook does not use copy protection or Digital Rights Management
For more information, see our eBook Help page.