terraform - ein einblick in die möglichkeiten von ... · terraform-kurzbeschreibung i...

20
Terraform Ein Einblick in die Möglichkeiten von Infrastructure-as-Code Dr. Sebastian Oehlke 2019-06-04

Upload: others

Post on 23-Oct-2019

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

TerraformEin Einblick in die Möglichkeiten von

Infrastructure-as-Code

Dr. Sebastian Oehlke

2019-06-04

Page 2: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Terraforming - Begriffserklärung

https://en.wikipedia.org/wiki/Image:MarsTransitionV.jpg

#atix #linuxstammtisch #linux #IaC

Page 3: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Motivation

Wir brauchen jetzt n-Ressourcen, die folgendeAnforderungen erfüllen …

#atix #linuxstammtisch #linux #IaC

Page 4: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Terraform - Kurzbeschreibung

I Infrastructure-as-code

I Hashicorp (Vagrant, Vault, Packer)

#atix #linuxstammtisch #linux #IaC

Page 5: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Terraform - Kurzbeschreibung

I Kodifiziert API-Befehle in deklaritive Konfigurationsdateien

I Open-Source

#atix #linuxstammtisch #linux #IaC

Page 6: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Terraform - Kurzbeschreibung

I Sicher und vorhersagbar

I Erstellen, Ändern, Verbessernder Infrastruktur

I Kombination vonverschiedenen Providern

I Code teilen, Versionskontrolle,Review-Möglichkeit

I Modular

I Gut zu automatisieren

#atix #linuxstammtisch #linux #IaC

Page 7: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Terraform - Kurzbeschreibung

I Sicher und vorhersagbar

I Erstellen, Ändern, Verbessernder Infrastruktur

I Kombination vonverschiedenen Providern

I Code teilen, Versionskontrolle,Review-Möglichkeit

I Modular

I Gut zu automatisieren

#atix #linuxstammtisch #linux #IaC

Page 8: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Schema

Infrastructure

ProviderCode Ressource 2

Ressource 1

Ressource 3

Ressource …

#atix #linuxstammtisch #linux #IaC

Page 9: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Auszug an Möglichkeiten mit Terraform

Provider-Gruppen:

I Verwaltung vonCloud-Diensten

I Verwaltung vonContainer-Plattformen

I Network Providern

I Version Control

I Monitoring & SystemManagement

I Databases

⇒ Wenn es eine API hat, geht vermutlich das Management via Terraform

#atix #linuxstammtisch #linux #IaC

Page 10: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Auszug an Möglichkeiten mit Terraform

Provider-Gruppen:

I Verwaltung vonCloud-Diensten

I Verwaltung vonContainer-Plattformen

I Network Providern

I Version Control

I Monitoring & SystemManagement

I Databases

⇒ Wenn es eine API hat, geht vermutlich das Management via Terraform

#atix #linuxstammtisch #linux #IaC

Page 11: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Ablaufplan

Code

Check

done

terraform plan

terraform apply

terraform init

(terraform destroy)

I Check der Syntax und ladender benötigten Plugins

I Erstellen von Übersicht

I Was bereits vorhandenI Was wird geändertI Was für Operationen

werden durchgeführt

I Provider Kommunikation (API)

I (Entfernen der Ressource(n))

#atix #linuxstammtisch #linux #IaC

Page 12: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Ablaufplan

Code

Check

done

terraform plan

terraform apply

terraform init

(terraform destroy)

I Check der Syntax und ladender benötigten Plugins

I Erstellen von Übersicht

I Was bereits vorhandenI Was wird geändertI Was für Operationen

werden durchgeführt

I Provider Kommunikation (API)

I (Entfernen der Ressource(n))

#atix #linuxstammtisch #linux #IaC

Page 13: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Variables

In Datei: variables.tf

variable "region" {description = "Region to be used"}

In Datei: terraform.tfvars

region = "eu-central-1"

Im Code:

region = "${var.region}"

⇒ Kombinierbar mit Modulen

#atix #linuxstammtisch #linux #IaC

Page 14: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Variables

In Datei: variables.tf

variable "region" {description = "Region to be used"}

In Datei: terraform.tfvars

region = "eu-central-1"

Im Code ab Version 0.12:

region = var.region

⇒ Kombinierbar mit Modulen

#atix #linuxstammtisch #linux #IaC

Page 15: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Modules

module "name" {source = "/path/to/folder"variable1 = "foo"variable2 = "bar"

}

module "frontend" {source = "git::[email protected]:user/i-modules.git//m-name?ref=v0.1"

variable1 = 8variable2 = 20

}

#atix #linuxstammtisch #linux #IaC

Page 16: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Modules

module "name" {source = "/path/to/folder"variable1 = "foo"variable2 = "bar"

}

module "frontend" {source = "git::[email protected]:user/i-modules.git//m-name?ref=v0.1"

variable1 = 8variable2 = 20

}

#atix #linuxstammtisch #linux #IaC

Page 17: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Zusammenarbeit mit Backends

User 2

User 3

User N

Backend

#atix #linuxstammtisch #linux #IaC

Page 18: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Terraform - k8s

#atix #linuxstammtisch #linux #IaC

Page 19: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Kritik und Ausblick

Aktuelle KritikpunkteI Sehr gute Übersicht der potentiellen Änderungen bevor diese

durchgeführt werden

I Code ist recht Provider-Spezifisch

I Durch unterschiedlicher Technologie nicht alle Settings lassensich 1:1 übertragen

I Provisinors sind recht limitiert

I aktuell nur Chef, Salt und rudimentäre ProvisinorsI aktuell kein Support für Ansible oder Puppet

Terraform ist immer noch in 0.x Status dewegen werden viele Sachen nochaddressiert und können innerhalb nächster Zeit schon umgesetzt werden

#atix #linuxstammtisch #linux #IaC

Page 20: Terraform - Ein Einblick in die Möglichkeiten von ... · Terraform-Kurzbeschreibung I Infrastructure-as-code I Hashicorp(Vagrant,Vault,Packer) #atix#linuxstammtisch#linux#IaC

Terraform - Ein Versuch ist es Wert

https://en.wikipedia.org/wiki/Image:MarsTransitionV.jpg

#atix #linuxstammtisch #linux #IaC