34
Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani

Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Cloud-Umgebungen mit Terraform verwalten

20.04.2016Sascha Askani

Page 2: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

2

Page 3: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Übersicht

3

Umgebung konfigurieren

Umgebung verwalten

Fazit und Ausblick

Einführung

Page 4: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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

Page 5: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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

Page 6: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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

Page 7: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Übersicht

7

Umgebung konfigurieren

Umgebung verwalten

Fazit und Ausblick

Einführung

Page 8: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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

Page 9: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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)

Page 10: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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()

Page 11: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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

Page 12: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Cloud-Umgebungen mit Terraform verwalten...die VPC

12

‣ Bildet den Rahmen für das Folgende

‣ Grundlagen werden definiert: Subnetze, Routing-Tabellen, Internet-Gateways...

Page 13: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Cloud-Umgebungen mit Terraform verwalten... Ressourcen – EC2 Loadbalancer

13

‣ Wir definieren den Loadbalancer, dem wir die Instanzen A und B zuweisen

Page 14: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Cloud-Umgebungen mit Terraform verwalten... Ressourcen – EC2 Instance

14

‣ Wir definieren die beiden Instanzen A und B

Page 15: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Cloud-Umgebungen mit Terraform verwalten... Ressourcen – Provisioner

15

‣ Werden einmalig beim Einrichten der VM ausgeführt (z.B. Chef, Exec, File)

Page 16: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Cloud-Umgebungen mit Terraform verwalten... Ressourcen – VPC Security Group

16

‣ Wir benötigen eine einfache Security Gruppe für Zugriffe auf unserer VMs

Page 17: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Übersicht

17

Umgebung konfigurieren

Umgebung verwalten

Fazit und Ausblick

Einführung

Page 18: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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)

Page 19: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Cloud-Umgebungen mit Terraform verwalten

19

einfacher Graph

Page 20: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Cloud-Umgebungen mit Terraform verwaltenGraph

20

Page 21: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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

Page 22: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Cloud-Umgebungen mit Terraform verwalten

22

DEMO

Page 23: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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

Page 24: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Übersicht

24

Umgebung konfigurieren

Umgebung verwalten

Fazit und Ausblick

Einführung

Page 25: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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

Page 26: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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

Page 27: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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

Page 28: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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

Page 29: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Vielen Dank!Sascha Askani,IT Engineering & Operations

inovex GmbHLudwig-Erhard-Allee 676133 Karlsruhe

Sie möchten individuelle Beratung? Nehmen SieKontakt mit uns auf!

[email protected]

Page 30: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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/

Page 31: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

Anhang

31

Lizenz des Vortrags

‣ Creative Commons (by-nc-nd)

Page 32: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

32

Page 33: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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

Page 34: Cloud-Umgebungen mit Terraform verwalten...Cloud-Umgebungen mit Terraform verwalten 20.04.2016 Sascha Askani Cloud-Umgebungen mit Terraform verwalten... über inovex und den Referenten

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