SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
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 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
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
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
Ü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-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
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, …)
‣ Kombination mehrerer Provider gleichzeitig
‣ Provider-Instanzen über “alias“ Definition
Cloud-Umgebungen mit Terraform verwalten
...die VPC
12
‣ Bildet den Rahmen für das Folgende
‣ Grundlagen werden definiert: Subnetze, Routing-Tabellen, Internet-Gateways...
Cloud-Umgebungen mit Terraform verwalten
... Ressourcen – EC2 Loadbalancer
13
‣ Wir definieren den Loadbalancer, dem wir die Instanzen A und B zuweisen
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ührt (z.B. Chef, Exec, File)
Cloud-Umgebungen mit Terraform verwalten
... Ressourcen – VPC Security Group
16
‣ Wir benötigen eine einfache Security Gruppe für Zugriffe auf unserer VMs
Ü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 Infrastruktur aufbauen
‣ destroy Infrastruktur abbauen
‣ show Plan bzw. State ausgeben
‣ taint/untaint Ressourcen zur Neuerstellung markieren
‣ graph Ressourcen Graph erstellen (dot)
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) 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
Cloud-Umgebungen mit Terraform verwalten
22
DEMO
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
Ü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
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
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
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
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
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
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/
Anhang
31
Lizenz des Vortrags
‣ Creative Commons (by-nc-nd)
32
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Infrastructure-as-Code (IaC) using Terraform
Infrastructure-as-Code (IaC) using TerraformInfrastructure-as-Code (IaC) using Terraform
Infrastructure-as-Code (IaC) using Terraform
 
Comprehensive Terraform Training
Comprehensive Terraform TrainingComprehensive Terraform Training
Comprehensive Terraform Training
 
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
 
Terraform Basics
Terraform BasicsTerraform Basics
Terraform Basics
 
Terraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeTerraform -- Infrastructure as Code
Terraform -- Infrastructure as Code
 
A brief introduction to IaC with Terraform by Kenton Robbins (codeHarbour May...
A brief introduction to IaC with Terraform by Kenton Robbins (codeHarbour May...A brief introduction to IaC with Terraform by Kenton Robbins (codeHarbour May...
A brief introduction to IaC with Terraform by Kenton Robbins (codeHarbour May...
 
Terraform
TerraformTerraform
Terraform
 
Introduction to IAC and Terraform
Introduction to IAC and Terraform Introduction to IAC and Terraform
Introduction to IAC and Terraform
 
Amazon Aurora
Amazon AuroraAmazon Aurora
Amazon Aurora
 
Terraform
TerraformTerraform
Terraform
 
Flutter Rennes - #1
Flutter Rennes - #1Flutter Rennes - #1
Flutter Rennes - #1
 
Introduction To Terraform
Introduction To TerraformIntroduction To Terraform
Introduction To Terraform
 
[2017 Windows on AWS] AWS 를 활용한 Active Directory 연동 및 이관 방안
[2017 Windows on AWS] AWS 를 활용한 Active Directory 연동 및 이관 방안[2017 Windows on AWS] AWS 를 활용한 Active Directory 연동 및 이관 방안
[2017 Windows on AWS] AWS 를 활용한 Active Directory 연동 및 이관 방안
 
Containerization & Docker - Under the Hood
Containerization & Docker - Under the HoodContainerization & Docker - Under the Hood
Containerization & Docker - Under the Hood
 
Azure virtual network
Azure virtual networkAzure virtual network
Azure virtual network
 
Infraestructura como codigo
Infraestructura como codigoInfraestructura como codigo
Infraestructura como codigo
 
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
 
KINX와 함께 하는 AWS Direct Connect 도입 - 남시우 매니저, KINX :: AWS Summit Seoul 2019
KINX와 함께 하는 AWS Direct Connect 도입 - 남시우 매니저, KINX :: AWS Summit Seoul 2019KINX와 함께 하는 AWS Direct Connect 도입 - 남시우 매니저, KINX :: AWS Summit Seoul 2019
KINX와 함께 하는 AWS Direct Connect 도입 - 남시우 매니저, KINX :: AWS Summit Seoul 2019
 
Microsoft Azure Traffic Manager
Microsoft Azure Traffic ManagerMicrosoft Azure Traffic Manager
Microsoft Azure Traffic Manager
 
Amazon CloudFront 101
Amazon CloudFront 101Amazon CloudFront 101
Amazon CloudFront 101
 

Andere mochten auch

Datenprodukte für Deutschlands größten Fahrzeugmarkt
Datenprodukte für Deutschlands größten FahrzeugmarktDatenprodukte für Deutschlands größten Fahrzeugmarkt
Datenprodukte für Deutschlands größten Fahrzeugmarkt
inovex GmbH
 

Andere mochten auch (7)

Web Components mit Polymer und AngularJS 1.x
Web Components mit Polymer und AngularJS 1.xWeb Components mit Polymer und AngularJS 1.x
Web Components mit Polymer und AngularJS 1.x
 
Concepts of React
Concepts of ReactConcepts of React
Concepts of React
 
Building infrastructure with Terraform (Google)
Building infrastructure with Terraform (Google)Building infrastructure with Terraform (Google)
Building infrastructure with Terraform (Google)
 
Hands-on Hystrix - Best Practices und Stolperfallen
Hands-on Hystrix - Best Practices und StolperfallenHands-on Hystrix - Best Practices und Stolperfallen
Hands-on Hystrix - Best Practices und Stolperfallen
 
Moderne App-Entwicklung am Beispiel waipu.tv
Moderne App-Entwicklung am Beispiel waipu.tvModerne App-Entwicklung am Beispiel waipu.tv
Moderne App-Entwicklung am Beispiel waipu.tv
 
Datenprodukte für Deutschlands größten Fahrzeugmarkt
Datenprodukte für Deutschlands größten FahrzeugmarktDatenprodukte für Deutschlands größten Fahrzeugmarkt
Datenprodukte für Deutschlands größten Fahrzeugmarkt
 
DevOps and Continuous Delivery Reference Architectures - Volume 2
DevOps and Continuous Delivery Reference Architectures - Volume 2DevOps and Continuous Delivery Reference Architectures - Volume 2
DevOps and Continuous Delivery Reference Architectures - Volume 2
 

Ähnlich wie Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten

Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
inovex GmbH
 
Tanuki service wrapper_101
Tanuki service wrapper_101Tanuki service wrapper_101
Tanuki service wrapper_101
inovex GmbH
 
Serverprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen InfrastrukturServerprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen Infrastruktur
inovex GmbH
 

Ähnlich wie Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten (20)

DevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwalten
DevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwaltenDevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwalten
DevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwalten
 
Infrastructure as Code mit Terraform
Infrastructure as Code mit TerraformInfrastructure as Code mit Terraform
Infrastructure as Code mit Terraform
 
Cloud Infrastructure with Crossplane
Cloud Infrastructure with CrossplaneCloud Infrastructure with Crossplane
Cloud Infrastructure with Crossplane
 
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
 
Marek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12c
Marek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12cMarek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12c
Marek Adar – IT-Tage 2015 – Oracle Recovery Manager unter 12c
 
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
 
Cloud-native Apps 2.0
Cloud-native Apps 2.0Cloud-native Apps 2.0
Cloud-native Apps 2.0
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Amazon EMR Grundlagen
Amazon EMR GrundlagenAmazon EMR Grundlagen
Amazon EMR Grundlagen
 
Tanuki service wrapper_101
Tanuki service wrapper_101Tanuki service wrapper_101
Tanuki service wrapper_101
 
A Hitchhiker’s Guide to the Cloud Native Stack. #ContainerConf
A Hitchhiker’s Guide to the Cloud Native Stack. #ContainerConfA Hitchhiker’s Guide to the Cloud Native Stack. #ContainerConf
A Hitchhiker’s Guide to the Cloud Native Stack. #ContainerConf
 
A Hitchhiker's Guide to the Cloud Native Stack
A Hitchhiker's Guide to the Cloud Native StackA Hitchhiker's Guide to the Cloud Native Stack
A Hitchhiker's Guide to the Cloud Native Stack
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
OpenStack – Automatisiertes Bereitstellen von Instanzen
OpenStack – Automatisiertes Bereitstellen von InstanzenOpenStack – Automatisiertes Bereitstellen von Instanzen
OpenStack – Automatisiertes Bereitstellen von Instanzen
 
papaya AWS Präsentation CeBIT 2010
papaya AWS Präsentation CeBIT 2010papaya AWS Präsentation CeBIT 2010
papaya AWS Präsentation CeBIT 2010
 
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
 
Serverprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen InfrastrukturServerprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen Infrastruktur
 
Exadata with VM as Consolidation Plattform
Exadata with VM as Consolidation PlattformExadata with VM as Consolidation Plattform
Exadata with VM as Consolidation Plattform
 
Amazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud ComputingsAmazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud Computings
 
Integration von OnSite- und Cloud-Systemen mit TransConnect® cloud
Integration von OnSite- und Cloud-Systemen mit TransConnect® cloud Integration von OnSite- und Cloud-Systemen mit TransConnect® cloud
Integration von OnSite- und Cloud-Systemen mit TransConnect® cloud
 

Mehr von inovex GmbH

Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
inovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
inovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
inovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
inovex GmbH
 

Mehr von inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
 

Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten

  • 2. Cloud-Umgebungen mit Terraform verwalten ... über inovex und den Referenten 2
  • 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. 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. 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
  • 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. 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. 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. 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. Cloud-Umgebungen mit Terraform verwalten ...die VPC 12 ‣ Bildet den Rahmen für das Folgende ‣ Grundlagen werden definiert: Subnetze, Routing-Tabellen, Internet-Gateways...
  • 13. Cloud-Umgebungen mit Terraform verwalten ... Ressourcen – EC2 Loadbalancer 13 ‣ Wir definieren den Loadbalancer, dem wir die Instanzen A und B zuweisen
  • 14. Cloud-Umgebungen mit Terraform verwalten ... Ressourcen – EC2 Instance 14 ‣ Wir definieren die beiden Instanzen A und B
  • 15. Cloud-Umgebungen mit Terraform verwalten ... Ressourcen – Provisioner 15 ‣ Werden einmalig beim Einrichten der VM ausgeführt (z.B. Chef, Exec, File)
  • 16. Cloud-Umgebungen mit Terraform verwalten ... Ressourcen – VPC Security Group 16 ‣ Wir benötigen eine einfache Security Gruppe für Zugriffe auf unserer VMs
  • 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. Cloud-Umgebungen mit Terraform verwalten 19 einfacher Graph
  • 20. Cloud-Umgebungen mit Terraform verwalten Graph 20
  • 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. Cloud-Umgebungen mit Terraform verwalten 22 DEMO
  • 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
  • 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. 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. 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. 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. 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. 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. Anhang 31 Lizenz des Vortrags ‣ Creative Commons (by-nc-nd)
  • 32. 32
  • 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. 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