infrastructure as code: cloud-umgebungen mit terraform verwalten
TRANSCRIPT
![Page 1: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/1.jpg)
Cloud-Umgebungen mit Terraform verwalten
20.04.2016Sascha Askani
![Page 2: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/2.jpg)
Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten
2
![Page 3: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/3.jpg)
Übersicht
3
Umgebung konfigurieren
Umgebung verwalten
Fazit und Ausblick
Einführung
![Page 4: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/4.jpg)
Cloud-Umgebungen mit Terraform verwalten... Continuous Delivery
4
Herausforderungen
‣ Vollständige Automatisierung der Prozesse
‣ Dev/Prod Parity – Werkzeuge und Prozesse der Umgebungen identisch halten
‣ Infrastructure as Code – Nachvollziehbarkeit, alles kommt aus einem Repository
Organi-sation
ContinuousDelivery
Plattform AppArchitektur
![Page 5: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/5.jpg)
Cloud-Umgebungen mit Terraform verwalten... Was ist Terraform?
5
Ziel
‣ “[...] Terraform is a tool for building, changing, and versioning infrastructure safely andefficiently. [...]“ (https://terraform.io/intro/)
Beispiel
‣
Organi-sation
ContinuousDelivery
Plattform AppArchitektur
![Page 6: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/6.jpg)
eu-central-2
Cloud-Umgebungen mit Terraform verwalten... das Beispiel
Quelle: https://aws.amazon.com/de/architecture/ 6
eu-central-1
Autoscaling Group
Loadbalancer
3 Tier Umgebung
‣ Web Tier
‣ Application Tier
‣ Datenbank Tier
Web SerWeb Server Web rWeb Server
Loadbalancer
RDS
Autoscaling Group
Web SerWeb Server Web rWeb Server
RDS
DNS
![Page 7: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/7.jpg)
Übersicht
7
Umgebung konfigurieren
Umgebung verwalten
Fazit und Ausblick
Einführung
![Page 8: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/8.jpg)
Cloud-Umgebungen mit Terraform verwalten... erster Schritt, Terraform Konzepte
8
Region eu-central-1
eu-central-1a eu-central-1b
Instance_a
Loadbalancer
Instance_b
Security Group
1. Region mit zwei Availability Zones
2. Ein Loadbalancer mit CNAME
3. Eine Security Gruppe
4. Je eine Instanz pro Zone
VPC
![Page 9: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/9.jpg)
Cloud-Umgebungen mit Terraform verwalten... die Konfigurationsdateien
9
‣ Format: Alle Dateien (*.tf / tf.json) werden ausgewertet
‣ Variables: enthält die Variablen, die wir in den Konfigurationsdateien verwenden
‣ Override: überschreibt existierende Ressourcen und ist als einzige nicht additiv
‣ Outputs: Informationen, die wir über die Umgebung ausgeben wollen
‣ Provider: Provider konfigurieren (AWS)
![Page 10: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/10.jpg)
Cloud-Umgebungen mit Terraform verwalten... von Variablen und Funktionen
10
‣ Der Zugriff auf Variablen wird durch den Prefix var. gekennzeichnet
‣ Auswertung: ${var.ssh_keyname} oder ${count.index +1}
‣ Zugriff auf andere Ressourcen erfolgt über die ID: ${aws_instance.foo.id}
‣ Es existieren verschiedene Funktionen wie beispielsweise lookup(), join()
![Page 11: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/11.jpg)
Cloud-Umgebungen mit Terraform verwalten... die Provider
11
‣ Definieren die zu verwendenden Backend-APIs (AWS, Azure, …)
‣ Kombination mehrerer Provider gleichzeitig
‣ Provider-Instanzen über “alias“ Definition
![Page 12: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/12.jpg)
Cloud-Umgebungen mit Terraform verwalten...die VPC
12
‣ Bildet den Rahmen für das Folgende
‣ Grundlagen werden definiert: Subnetze, Routing-Tabellen, Internet-Gateways...
![Page 13: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/13.jpg)
Cloud-Umgebungen mit Terraform verwalten... Ressourcen – EC2 Loadbalancer
13
‣ Wir definieren den Loadbalancer, dem wir die Instanzen A und B zuweisen
![Page 14: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/14.jpg)
Cloud-Umgebungen mit Terraform verwalten... Ressourcen – EC2 Instance
14
‣ Wir definieren die beiden Instanzen A und B
![Page 15: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/15.jpg)
Cloud-Umgebungen mit Terraform verwalten... Ressourcen – Provisioner
15
‣ Werden einmalig beim Einrichten der VM ausgeführt (z.B. Chef, Exec, File)
![Page 16: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/16.jpg)
Cloud-Umgebungen mit Terraform verwalten... Ressourcen – VPC Security Group
16
‣ Wir benötigen eine einfache Security Gruppe für Zugriffe auf unserer VMs
![Page 17: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/17.jpg)
Übersicht
17
Umgebung konfigurieren
Umgebung verwalten
Fazit und Ausblick
Einführung
![Page 18: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/18.jpg)
Cloud-Umgebungen mit Terraform verwalten... Command Line Interface (Auszug)
18
‣ plan Ausführungsplan anzeigen
‣ apply Infrastruktur aufbauen‣ destroy Infrastruktur abbauen‣ show Plan bzw. State ausgeben‣ taint/untaint Ressourcen zur Neuerstellung markieren
‣ graph Ressourcen Graph erstellen (dot)
![Page 19: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/19.jpg)
Cloud-Umgebungen mit Terraform verwalten
19
einfacher Graph
![Page 20: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/20.jpg)
Cloud-Umgebungen mit Terraform verwaltenGraph
20
![Page 21: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/21.jpg)
Cloud-Umgebungen mit Terraform verwalten... State
21
‣ Speichert den Zustand nach dem Ausführen von Terraform (.tfstate) in einer JSON Datei
‣ Terraform CLI
‣ output (State File ausgeben)
‣ refresh (State File aktualisieren)
‣ remote (State File initial remote ablegen)
‣ Kann remote gespeichert werden, um ihn von verschiedenen Stellen ausführen zu können
‣ AWS CLI wird für remote state benötigt
![Page 22: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/22.jpg)
Cloud-Umgebungen mit Terraform verwalten
22
DEMO
![Page 23: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/23.jpg)
Cloud-Umgebungen mit Terraform verwalten... Lifecycle
23
‣ Kontrolle der Reihenfolge und Zulässigkeit von Änderungen
‣ create_before_destroy: Neue Ressourcen werden aufgebaut, bevor alte gelöscht werden (aktuell NICHT bei taint)
‣ prevent_destroy: Wenn gesetzt, schlägt jeder apply fehl, der diese Ressource löschen würde.
‣ ignore_changes: Einstellungen, die beim diff ignoriert werden und somit keine Änderung auslösen
![Page 24: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/24.jpg)
Übersicht
24
Umgebung konfigurieren
Umgebung verwalten
Fazit und Ausblick
Einführung
![Page 25: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/25.jpg)
eu-central-2
Cloud-Umgebungen mit Terraform verwalten... unser initiales Ziel
25
eu-central-1
Autoscaling Group
Loadbalancer
Web SerWeb Server Web rWeb Server
Loadbalancer
RDS
Autoscaling Group
Web SerWeb Server Web rWeb Server
RDS
3 Tier Umgebung
‣ Um die fehlenden Ressourcen mit Terraform abbilden zu können, benötigen wir ein genaueres Verständnis der AWS VPC Konzepte.
VPC
![Page 26: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/26.jpg)
Cloud-Umgebungen mit Terraform verwalten... AWS Virtual Private Cloud (VPC) Konzepte und Ausblick
Quelle: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/default-vpc.html 26
Amazon AWS
Instanz
Security Group
Subnetz
ACL
Routing Table
Internet Gateway
1. Weitergehende Amazon Struktur integrieren
2. Ressourcen für Tier 2 und 3 hinzufügen
3. Instanzen durch Autoscaling Gruppen ersetzen
![Page 27: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/27.jpg)
Cloud-Umgebungen mit Terraform verwalten... Fazit
27
‣ Eigene Anforderungen prüfen, ob sie mit Terraform umsetzbar sind
‣ Schnelle aktive Weiterentwicklung
‣ Typische Verwendungszwecke
‣ Einwegumgebungen
‣ Demo Umgebungen
‣ Self-Service Cluster
![Page 28: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/28.jpg)
Cloud-Umgebungen mit Terraform verwalten... Fazit
28
‣ Bei Einsatz in Produktivumgebungen:
‣ Module verwenden
‣ Remote State verwenden (ggfs. Atlas)
‣ “terraform_remote_state“ Provisioner verwenden
‣ Images bauen mit Packer, Referenzieren in terraform + Lifecycle = Immutable Infrastructure
![Page 29: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/29.jpg)
Vielen Dank!Sascha Askani,IT Engineering & Operations
inovex GmbHLudwig-Erhard-Allee 676133 Karlsruhe
Sie möchten individuelle Beratung? Nehmen SieKontakt mit uns auf!
![Page 30: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/30.jpg)
Anhang... wo Sie in Ruhe nachlesen können
30
Terraform Dokumentation
‣ https://terraform.io/docs
AWS Dokumentation
‣ https://aws.amazon.com/de/architecture/
‣ http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/
‣ http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/
![Page 31: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/31.jpg)
Anhang
31
Lizenz des Vortrags
‣ Creative Commons (by-nc-nd)
![Page 32: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/32.jpg)
32
![Page 33: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/33.jpg)
Cloud-Umgebungen mit Terraform verwalten... Module
33
‣ Wiederverwendbare Komponente(n) gruppiert
‣ Nested Modules
‣ terraform get löst Abhängigkeiten auf
‣ Ablage in
‣ Lokalen Pfaden
‣ git (allgemein)
‣ Github / Bitbucket (speziell)
‣ http URLs
![Page 34: Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten](https://reader034.vdocuments.mx/reader034/viewer/2022042611/58ef280d1a28ab30178b4681/html5/thumbnails/34.jpg)
Cloud-Umgebungen mit Terraform verwalten... Remote State Provider
34
‣ Zugriff auf vorhandenene Remote States
‣ Entkoppelung einzelner Komponenten
‣ Getrennte Verwaltung von aufeinander aufbauenden Komponenten durch verschiedene Teams