Cloud-Umgebungen mit Terraform
verwalten
20.04.2016
SaschaAskani
Cloud-Umgebungen mit Terraform verwalten
... über inovex und den Referenten
2
Übersicht
3
Umgebung konfigurieren
Umgebung verwalten
Fazit und Ausblick
Einführung
Cloud-Umgebungen mit Terraform verwalten
... Continuous Delivery
4
Herausforderungen
‣ Vollständige Automatisierung der Pr...
Cloud-Umgebungen mit Terraform verwalten
... Was ist Terraform?
5
Ziel
‣ “[...] Terraform is a tool for building, changing...
eu-central-2
Cloud-Umgebungen mit Terraform verwalten
... das Beispiel
Quelle: https://aws.amazon.com/de/architecture/ 6
e...
Übersicht
7
Umgebung konfigurieren
Umgebung verwalten
Fazit und Ausblick
Einführung
Cloud-Umgebungen mit Terraform verwalten
... erster Schritt, Terraform Konzepte
8
Region eu-central-1
eu-central-1a eu-cen...
Cloud-Umgebungen mit Terraform verwalten
... die Konfigurationsdateien
9
‣ Format: Alle Dateien (*.tf / tf.json) werden au...
Cloud-Umgebungen mit Terraform verwalten
... von Variablen und Funktionen
10
‣ Der Zugriff auf Variablen wird durch den Pr...
Cloud-Umgebungen mit Terraform verwalten
... die Provider
11
‣ Definieren die zu verwendenden Backend-APIs (AWS, Azure, …)...
Cloud-Umgebungen mit Terraform verwalten
...die VPC
12
‣ Bildet den Rahmen für das Folgende
‣ Grundlagen werden definiert:...
Cloud-Umgebungen mit Terraform verwalten
... Ressourcen – EC2 Loadbalancer
13
‣ Wir definieren den Loadbalancer, dem wir d...
Cloud-Umgebungen mit Terraform verwalten
... Ressourcen – EC2 Instance
14
‣ Wir definieren die beiden Instanzen A und B
Cloud-Umgebungen mit Terraform verwalten
... Ressourcen – Provisioner
15
‣ Werden einmalig beim Einrichten der VM ausgefüh...
Cloud-Umgebungen mit Terraform verwalten
... Ressourcen – VPC Security Group
16
‣ Wir benötigen eine einfache Security Gru...
Übersicht
17
Umgebung konfigurieren
Umgebung verwalten
Fazit und Ausblick
Einführung
Cloud-Umgebungen mit Terraform verwalten
... Command Line Interface (Auszug)
18
‣ plan Ausführungsplan anzeigen
‣ apply In...
Cloud-Umgebungen mit Terraform verwalten
19
einfacher Graph
Cloud-Umgebungen mit Terraform verwalten
Graph
20
Cloud-Umgebungen mit Terraform verwalten
... State
21
‣ Speichert den Zustand nach dem Ausführen von
Terraform (.tfstate) ...
Cloud-Umgebungen mit Terraform verwalten
22
DEMO
Cloud-Umgebungen mit Terraform verwalten
... Lifecycle
23
‣ Kontrolle der Reihenfolge und Zulässigkeit von Änderungen
‣ cr...
Übersicht
24
Umgebung konfigurieren
Umgebung verwalten
Fazit und Ausblick
Einführung
eu-central-2
Cloud-Umgebungen mit Terraform verwalten
... unser initiales Ziel
25
eu-central-1
Autoscaling Group
Loadbalan...
Cloud-Umgebungen mit Terraform verwalten
... AWS Virtual Private Cloud (VPC) Konzepte und Ausblick
Quelle: http://docs.aws...
Cloud-Umgebungen mit Terraform verwalten
... Fazit
27
‣ Eigene Anforderungen prüfen, ob sie mit Terraform umsetzbar sind
‣...
Cloud-Umgebungen mit Terraform verwalten
... Fazit
28
‣ Bei Einsatz in Produktivumgebungen:
‣ Module verwenden
‣ Remote St...
Vielen Dank!
Sascha Askani,
IT Engineering & Operations
inovex GmbH
Ludwig-Erhard-Allee 6
76133 Karlsruhe
Sie möchten indi...
Anhang
... wo Sie in Ruhe nachlesen können
30
Terraform Dokumentation
‣ https://terraform.io/docs
AWS Dokumentation
‣ http...
Anhang
31
Lizenz des Vortrags
‣ Creative Commons (by-nc-nd)
32
Cloud-Umgebungen mit Terraform verwalten
... Module
33
‣ Wiederverwendbare Komponente(n) gruppiert
‣ Nested Modules
‣ terr...
Cloud-Umgebungen mit Terraform verwalten
... Remote State Provider
34
‣ Zugriff auf vorhandenene Remote States
‣ Entkoppel...
Nächste SlideShare
Wird geladen in …5
×

Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten

185 Aufrufe

Veröffentlicht am

Continuous Delivery setzt auf die Automatisierung von Entwicklungs- und Betriebsprozessen, um die Performance und Qualität im Applikationsbetrieb zu erhöhen. Hierbei ist Terraform ein passendes Werkzeug, mit dessen Hilfe Infrastruktur effizient verwaltet werden kann. Die Session erläutert den Aufbau einer Cloud-Infrastruktur bei Amazon AWS mit Terraform, bestehend aus virtuellen Instanzen, Netzen, Load Balancing und DNS. Die Herausforderungen und Vorteile (Immutable Infrastructure), die sich dadurch bei der Implementierung von Continuous-Delivery-Pipelines für die Entwicklung und den Betrieb ergeben, werden dann anhand des Beispiels diskutiert.

Event: JAX 2016, 20.04.2016
Speaker: Sascha Askani, inovex GmbH

Mehr Tech-Vorträge: https://www.inovex.de/de/content-pool/vortraege/

Veröffentlicht in: Software
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
185
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
18
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten

  1. 1. Cloud-Umgebungen mit Terraform verwalten 20.04.2016 SaschaAskani
  2. 2. Cloud-Umgebungen mit Terraform verwalten ... über inovex und den Referenten 2
  3. 3. Übersicht 3 Umgebung konfigurieren Umgebung verwalten Fazit und Ausblick Einführung
  4. 4. 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 Continuous Delivery Plattform App Architektur
  5. 5. Cloud-Umgebungen mit Terraform verwalten ... Was ist Terraform? 5 Ziel ‣ “[...] 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. 6. 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
  7. 7. Übersicht 7 Umgebung konfigurieren Umgebung verwalten Fazit und Ausblick Einführung
  8. 8. 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
  9. 9. 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)
  10. 10. 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()
  11. 11. 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
  12. 12. Cloud-Umgebungen mit Terraform verwalten ...die VPC 12 ‣ Bildet den Rahmen für das Folgende ‣ Grundlagen werden definiert: Subnetze, Routing-Tabellen, Internet-Gateways...
  13. 13. Cloud-Umgebungen mit Terraform verwalten ... Ressourcen – EC2 Loadbalancer 13 ‣ Wir definieren den Loadbalancer, dem wir die Instanzen A und B zuweisen
  14. 14. Cloud-Umgebungen mit Terraform verwalten ... Ressourcen – EC2 Instance 14 ‣ Wir definieren die beiden Instanzen A und B
  15. 15. Cloud-Umgebungen mit Terraform verwalten ... Ressourcen – Provisioner 15 ‣ Werden einmalig beim Einrichten der VM ausgeführt (z.B. Chef, Exec, File)
  16. 16. Cloud-Umgebungen mit Terraform verwalten ... Ressourcen – VPC Security Group 16 ‣ Wir benötigen eine einfache Security Gruppe für Zugriffe auf unserer VMs
  17. 17. Übersicht 17 Umgebung konfigurieren Umgebung verwalten Fazit und Ausblick Einführung
  18. 18. 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)
  19. 19. Cloud-Umgebungen mit Terraform verwalten 19 einfacher Graph
  20. 20. Cloud-Umgebungen mit Terraform verwalten Graph 20
  21. 21. 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
  22. 22. Cloud-Umgebungen mit Terraform verwalten 22 DEMO
  23. 23. 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
  24. 24. Übersicht 24 Umgebung konfigurieren Umgebung verwalten Fazit und Ausblick Einführung
  25. 25. 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
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. Vielen Dank! Sascha Askani, IT Engineering & Operations inovex GmbH Ludwig-Erhard-Allee 6 76133 Karlsruhe Sie möchten individuelle Beratung? Nehmen Sie Kontakt mit uns auf! info@inovex.de
  30. 30. 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/
  31. 31. Anhang 31 Lizenz des Vortrags ‣ Creative Commons (by-nc-nd)
  32. 32. 32
  33. 33. 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
  34. 34. 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

×