cloud-umgebungen mit terraform verwalten...cloud-umgebungen mit terraform verwalten 20.04.2016...
Post on 22-Jun-2020
17 Views
Preview:
TRANSCRIPT
Cloud-Umgebungen mit Terraform verwalten
20.04.2016Sascha Askani
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
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
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 verwaltenGraph
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 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
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
top related