Mit Terraform errichten Sie komplexe Infrastrukturen automatisiert in der Cloud und orchestrieren Deployments, die genau Ihren Anforderungen entsprechen. Tim Beermann, Johannes Kastl, Christian Rost, Thorsten Schifferdecker und Eike Waldt zeigen Ihnen, wie Sie Deployments verwalten, Ressourcen mit HCL skripten und den State Ihres Setups verwalten. So gerüstet entwerfen Sie wiederverwendbaren Code, vermeiden Fallstricke und schaffen einen komfortablen Arbeitsweg zur Verwaltung Ihrer Cloud-Landschaften.
Aus dem Inhalt:
Materialien zum Buch ... 12
1. Einleitung ... 13
1.1 ... Gliederung ... 13
1.2 ... Voraussetzungen für das Arbeiten mit Terraform ... 16
1.3 ... Zu den Autoren dieses Werks ... 17
2. Was ist Terraform? ... 21
2.1 ... Cloud Computing und seine Auswirkungen ... 21
2.2 ... Das Prinzip Infrastructure as Code ... 22
2.3 ... Terraform, seine Geschichte und seine Funktionsweise ... 23
2.4 ... Wie funktioniert die Cloud? ... 24
2.5 ... Ansible, Chef, Salt, Puppet, Terraform -- welches Werkzeug für welche Aufgabe? ... 26
3. Erste Schritte mit Terraform ... 29
3.1 ... Installation von Terraform ... 29
3.2 ... Schnelleinstieg: Ein typischer Terraform-Workflow ... 40
3.3 ... Konventionen für Dateinamen und Unterordner ... 53
3.4 ... Ordnerstruktur ... 56
4. Provider ... 57
4.1 ... Provider finden und installieren ... 57
4.2 ... Konfiguration und Authentifizierung ... 66
4.3 ... Szenarien: So deployen Sie Terraform ... 68
5. State -- der Zustand der Umgebung ... 185
5.1 ... Interaktion mit dem State ... 187
5.2 ... Format ... 189
5.3 ... Speicherort des State ... 190
5.4 ... State durch Locking verriegeln ... 208
5.5 ... Sicherheit ... 210
6. Variablen und Datenquellen ... 213
6.1 ... Was sind Variablen? ... 214
6.2 ... Eingabevariablen setzen und verwenden ... 214
6.3 ... Ausgabewerte (Outputs) ... 238
6.4 ... Lokale Variablen oder Werte ... 241
6.5 ... Datenquellen (Data Sources) ... 243
6.6 ... Interne Werte und Block-lokale Werte ... 247
7. Terraform programmieren -- die Sprache HCL ... 255
7.1 ... Logikfunktionen ... 255
7.2 ... Provisioner als Schnittstellen zum Konfigurationsmanagement ... 268
7.3 ... Abhängigkeiten verwalten ... 290
7.4 ... Arbeiten mit Terraform-Modulen ... 295
7.5 ... Deployments versionieren ... 304
7.6 ... Code modularisieren und strukturieren: Best Practices für Terraform ... 309
7.7 ... Funktionen ... 315
7.8 ... Ausdrücke und Expressions ... 332
7.9 ... Nützliche Funktionen und Beispiele ... 338
8. Updates und Day 2 Operations ... 353
8.1 ... Backup, Backup, Backup ... 353
8.2 ... Überprüfung und automatische Qualitätskontrollen für Terraform-Code ... 354
8.3 ... Mit Terraform arbeiten ... 355
8.4 ... Überwachung (Monitoring) der Umgebung ... 355
8.5 ... Updates und Änderungen einspielen ... 359
8.6 ... Lifecycle-Management mit Terraform ... 369
8.7 ... Day 2 Operations für Terraform ... 379
9. Erfahrungswerte, Tipps und Tricks ... 387
9.1 ... Versionsverwaltung nutzen ... 387
9.2 ... Remote Backends nutzen ... 390
9.3 ... Terraform-Code strukturieren durch Nutzung von Modulen ... 390
9.4 ... Terraform-Code und Repository logisch strukturieren ... 398
9.5 ... Terraform-Code prüfen, kontrollieren und testen ... 404
9.6 ... Variablen mit Standardwert null ... 411
9.7 ... Zugriff auf geschachtelte Listen ... 412
10. Vorgefertigtes Beispiel ... 415
10.1 ... Szenario ... 415
10.2 ... Vorbereitung ... 416
10.3 ... Das Deployment ... 419
11. Ausblick ... 423
11.1 ... Automate the Automation ... 423
11.2 ... Terraform Cloud und Enterprise ... 425
11.3 ... Terragrunt, Timon und weitere Tools ... 437
11.4 ... Cloud Development Kit Terraform (CDKTF) ... 442
12. Kommandoreferenz ... 445
12.1 ... Allgemeine Parameter ... 445
12.2 ... Wichtige Befehle ... 446
12.3 ... Weniger häufig verwendete Befehle ... 458
12.4 ... Konfigurationsoptionen für die Terraform-CLI (alias Terraform Settings) ... 485
Index ... 491