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 Continuous Delivery Plattform App Architektur
‣ “[...] Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. [...]“ (https://terraform.io/intro/) Beispiel ‣ Organi- sation Continuous Delivery Plattform App Architektur
6 eu-central-1 Autoscaling Group Loadbalancer 3 Tier Umgebung ‣ Web Tier ‣ Application Tier ‣ Datenbank Tier Web Ser Web Server Web r Web Server Loadbalancer RDS Autoscaling Group Web Ser Web Server Web r Web Server RDS
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 3. Eine Security Gruppe 4. Je eine Instanz pro Zone
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)
‣ 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()
die zu verwendenden Backend-APIs (AWS, Azure, …) ‣ Es sind Aliase zur Verwendung mehrerer Provider gleichzeitig möglich ‣ Provider-Instanzen über “alias“ Definition
‣ apply Infrastruktur aufbauen ‣ destroy Infrastruktur abbauen ‣ graph Ressourcen Graph erstellen (dot) ‣ plan Ausführungsplan anzeigen ‣ show Plan bzw. State ausgeben ‣ taint/untaint Ressourcen zur Neuerstellung markieren
Zustand nach dem Ausführen von Terraform (.tfstate) in einer JSON Datei ‣ Kann remote gespeichert werden, um ihn von verschiedenen Stellen ausführen zu können ‣ Terraform Cli ‣ output (State File ausgeben) ‣ refresh (State File aktualisieren) ‣ remote (State File initial remote ablegen) ‣ AWS CLI wird benötigt
eu-central-1 Autoscaling Group Loadbalancer Web Ser Web Server Web r Web Server Loadbalancer RDS Autoscaling Group Web Ser Web Server Web r Web 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.
Konzepte und Ausblick Quelle: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/default-vpc.html 23 Amazon AWS Instanz Security Group Subnetz ACL Routing Table Internet Gateway 1. Amazon Struktur in unser Beispiel integrieren 2. Ressourcen für Tier 2 und 3 hinzufügen 3. Instanzen durch Autoscaling Gruppen ersetzen
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