Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwalten

5,984 views

Published on

Continuous Delivery setzt auf die Automatisierung von Entwicklungs- und Betriebsprozessen, um die Performance und Qualität in der IT zu erhöhen. Mit Terraform zeigte der Referent ein Tool, mit dessen Hilfe Infrastruktur effizient verwaltet werden kann.
Der Referent demonstrierte live den Aufbau einer Cloud-Infrastruktur aus virtuellen Instanzen, Netzen, Loadbalancing und DNS bei Amazon AWS. Weiterhin ging er auf Herausforderungen und Vorteile (immutable Infrastructure) ein, die sich dadurch bei der Implementierung von Continuous-Delivery-Pipelines für die Entwicklung und den Betrieb ergeben.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

DevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwalten

  1. 1. Cloud-Umgebungen mit Terraform verwalten DevDay - 12.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
  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 3. Eine Security Gruppe 4. Je eine Instanz pro Zone
  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, …) ‣ Es sind Aliase zur Verwendung mehrerer Provider gleichzeitig möglich ‣ Provider-Instanzen über “alias“ Definition
  12. 12. Cloud-Umgebungen mit Terraform verwalten ... Ressourcen – EC2 Loadbalancer 12 ‣ Wir definieren den Loadbalancer, dem wir zwei Instanzen A und B zuweisen
  13. 13. Cloud-Umgebungen mit Terraform verwalten ... Ressourcen – EC2 Instance 13 ‣ Wir definieren die beiden Instanzen A und B
  14. 14. Cloud-Umgebungen mit Terraform verwalten ... Ressourcen – Provisioner 14 ‣ Werden einmalig beim Einrichten der VM ausgeführt (z.B. Chef, Exec, File)
  15. 15. Cloud-Umgebungen mit Terraform verwalten ... Ressourcen – VPC Security Group 15 ‣ Wir benötigen eine einfache Security Gruppe für Zugriffe auf unserer VMs
  16. 16. Übersicht 16 Umgebung konfigurieren Umgebung verwalten Fazit und Ausblick Einführung
  17. 17. 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
  18. 18. Cloud-Umgebungen mit Terraform verwalten Graph 18
  19. 19. 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
  20. 20. Cloud-Umgebungen mit Terraform verwalten 20 DEMO
  21. 21. Übersicht 21 Umgebung konfigurieren Umgebung verwalten Fazit und Ausblick Einführung
  22. 22. 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.
  23. 23. 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
  24. 24. 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
  25. 25. Cloud-Umgebungen mit Terraform verwalten ... Fazit 25 ‣ Bei Einsatz in Produktivumgebungen: ‣ Module verwenden ‣ Remote State verwenden ‣ “terraform_remote_state“ Provisioner verwenden
  26. 26. 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
  27. 27. 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/
  28. 28. Anhang 28 Lizenz des Vortrags ‣ Creative Commons (by-nc-nd)
  29. 29. 29
  30. 30. 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
  31. 31. Cloud-Umgebungen mit Terraform verwalten ... Remote State Provider 31 ‣ Zugriff auf vorhandenene Remote States ‣ Entkoppelung einzelner Komponenten ‣ Getrennte Verwaltung von aufeinander aufbauenden Komponenten
  32. 32. 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

×