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

Post on 23-Oct-2019

10 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

TerraformEin Einblick in die Möglichkeiten von

Infrastructure-as-Code

Dr. Sebastian Oehlke

2019-06-04

Terraforming - Begriffserklärung

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

#atix #linuxstammtisch #linux #IaC

Motivation

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

#atix #linuxstammtisch #linux #IaC

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

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

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

Schema

Infrastructure

ProviderCode Ressource 2

Ressource 1

Ressource 3

Ressource …

#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

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

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

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

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

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

Modules

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

}

module "frontend" {source = "git::git@github.com:user/i-modules.git//m-name?ref=v0.1"

variable1 = 8variable2 = 20

}

#atix #linuxstammtisch #linux #IaC

Modules

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

}

module "frontend" {source = "git::git@github.com:user/i-modules.git//m-name?ref=v0.1"

variable1 = 8variable2 = 20

}

#atix #linuxstammtisch #linux #IaC

Zusammenarbeit mit Backends

User 2

User 3

User N

Backend

#atix #linuxstammtisch #linux #IaC

Terraform - k8s

#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

Terraform - Ein Versuch ist es Wert

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

#atix #linuxstammtisch #linux #IaC

top related