devday 2016: sascha askani - cloud-umgebungen mit terraform verwalten
Post on 15-Jan-2017
3.504 Views
Preview:
TRANSCRIPT
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
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
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
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
3. Eine Security Gruppe
4. Je eine Instanz pro Zone
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)
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()
Cloud-Umgebungen mit Terraform verwalten... die Provider
11
‣ Definieren die zu verwendenden Backend-APIs (AWS, Azure, …)
‣ Es sind Aliase zur Verwendung mehrerer Provider gleichzeitig möglich
‣ Provider-Instanzen über “alias“ Definition
Cloud-Umgebungen mit Terraform verwalten... Ressourcen – EC2 Loadbalancer
12
‣ Wir definieren den Loadbalancer, dem wir zwei Instanzen A und B zuweisen
Cloud-Umgebungen mit Terraform verwalten... Ressourcen – EC2 Instance
13
‣ Wir definieren die beiden Instanzen A und B
Cloud-Umgebungen mit Terraform verwalten... Ressourcen – Provisioner
14
‣ Werden einmalig beim Einrichten der VM ausgeführt (z.B. Chef, Exec, File)
Cloud-Umgebungen mit Terraform verwalten... Ressourcen – VPC Security Group
15
‣ Wir benötigen eine einfache Security Gruppe für Zugriffe auf unserer VMs
Cloud-Umgebungen mit Terraform verwalten... Command Line Interface (Auszug)
17
‣ 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
Cloud-Umgebungen mit Terraform verwalten... State
19
‣ Speichert den 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-2
Cloud-Umgebungen mit Terraform verwalten... unser initiales Ziel
22
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.
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 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
Cloud-Umgebungen mit Terraform verwalten... Fazit
24
‣ Eigene Anforderungen prüfen, ob sie mit Terraform umsetzbar sind
‣ Schnelle aktive Weiterentwicklung
‣ Typische Verwendungszwecke
‣ Einwegumgebungen
‣ Demo Umgebungen
‣ Self-Service Cluster
Cloud-Umgebungen mit Terraform verwalten... Fazit
25
‣ Bei Einsatz in Produktivumgebungen:
‣ Module verwenden
‣ Remote State verwenden
‣ “terraform_remote_state“ Provisioner verwenden
Vielen Dank!Sascha Askani,IT Engineering & Operations
inovex GmbHLudwig-Erhard-Allee 676133 Karlsruhe
Sie möchten individuelle Beratung? Nehmen SieKontakt mit uns auf!
info@inovex.de
Anhang... wo Sie in Ruhe nachlesen können
27
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/
Cloud-Umgebungen mit Terraform verwalten... Module
30
‣ Wiederverwendbare Komponente(n) gruppiert
‣ Nested Modules
‣ terraform get löst Abhängigkeiten auf
‣ Ablage in
‣ Lokalen Pfaden
‣ git
‣ Github / Bitbucket (speziell)
‣ http URLs
Cloud-Umgebungen mit Terraform verwalten... Remote State Provider
31
‣ Zugriff auf vorhandenene Remote States
‣ Entkoppelung einzelner Komponenten
‣ Getrennte Verwaltung von aufeinander aufbauenden Komponenten
Cloud-Umgebungen mit Terraform verwalten... Lifecycle
32
‣ 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
top related