+ All Categories
Home > Documents > Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I...

Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I...

Date post: 15-Jun-2020
Category:
Upload: others
View: 6 times
Download: 0 times
Share this document with a friend
31
Terraform Ein Einblick der Möglichkeiten von Infrastructure-as-Code Dr. Sebastian Oehlke 27.04.2019
Transcript
Page 1: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

TerraformEin Einblick der Möglichkeiten von

Infrastructure-as-Code

Dr. Sebastian Oehlke

27.04.2019

Page 2: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Terraforming - Begriffserklärung

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

#atix #graz19 #IaC

Page 3: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Motivation

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

#atix #graz19 #IaC

Page 4: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Terraform - Kurzbeschreibung

I Infrastructure-as-code

I Hashicorp (Vagrant, Vault, Packer)

#atix #graz19 #IaC

Page 5: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Terraform - Kurzbeschreibung

I Kodifiziert API-Befehle in deklaritive Konfigurationsdateien

I Open-Source

#atix #graz19 #IaC

Page 6: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

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 #graz19 #IaC

Page 7: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

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 #graz19 #IaC

Page 8: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

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 #graz19 #IaC

Page 9: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

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 #graz19 #IaC

Page 10: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Schema

Infrastructure

ProviderCode Ressource 2

Ressource 1

Ressource 3

Ressource …

#atix #graz19 #IaC

Page 11: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

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 #graz19 #IaC

Page 12: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

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 #graz19 #IaC

Page 13: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

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 #graz19 #IaC

Page 14: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

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 #graz19 #IaC

Page 15: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

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 #graz19 #IaC

Page 16: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

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 #graz19 #IaC

Page 17: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Zusammenarbeit mit Backends

User 2

User 3

User N

Backend

#atix #graz19 #IaC

Page 18: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Rolle von Provisioning

Ressource nativ

Provisioner

Ressourcekonfiguriert

I Notwendigkeit abhängig vonProvider/Ressourcentyp (VM vs.Container)

I Einrichten von 1-N Ressourcen

I Nutzen von Facts undIdempotenz

#atix #graz19 #IaC

Page 19: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Rolle von Provisioning

Ressource nativ

Provisioner

Ressourcekonfiguriert

I Notwendigkeit abhängig vonProvider/Ressourcentyp (VM vs.Container)

I Einrichten von 1-N Ressourcen

I Nutzen von Facts undIdempotenz

#atix #graz19 #IaC

Page 20: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Ansible vs. Terraform

AnsibleI Configuration management

I Verwenden der Facts fürweitere Operationen

I Geeignet um Ressourceeinzurichten

I Dry-run nicht so informativ wasgeändert werden soll

TerraformI Ressource orchestration

I Übersichtliche Auflistung, wasgeändert wird

I Sehr rudimentäres provisioning

⇒ Kombination um Vorteile beider zu nutzen

#atix #graz19 #IaC

Page 21: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Ansible vs. Terraform

AnsibleI Configuration management

I Verwenden der Facts fürweitere Operationen

I Geeignet um Ressourceeinzurichten

I Dry-run nicht so informativ wasgeändert werden soll

TerraformI Ressource orchestration

I Übersichtliche Auflistung, wasgeändert wird

I Sehr rudimentäres provisioning

⇒ Kombination um Vorteile beider zu nutzen

#atix #graz19 #IaC

Page 22: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Ansible vs. Terraform

AnsibleI Configuration management

I Verwenden der Facts fürweitere Operationen

I Geeignet um Ressourceeinzurichten

I Dry-run nicht so informativ wasgeändert werden soll

TerraformI Ressource orchestration

I Übersichtliche Auflistung, wasgeändert wird

I Sehr rudimentäres provisioning

⇒ Kombination um Vorteile beider zu nutzen

#atix #graz19 #IaC

Page 23: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Kombination von Ansible und Terraform

Vorteil Ansible

I Wiederverwendungexistierender Rollen

I Nutzung vonDistro-unabhängigen Modulen

Vorteil Terraform

I Ressourcenmanagement

I Detailliertere Übersicht derÄnderungen

I Drift detection

I Komplette Lifecycle Kontrolle(Erstellen, Ändern, Entfernen)

I Gleiche Sprache umInfrastruktur und Ressourceneinzurichten

#atix #graz19 #IaC

Page 24: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Kombination von Ansible und Terraform

Ansible

Terraform Ressource(n)

AusführenInventory

Setup

Provisioning

#atix #graz19 #IaC

Page 25: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Demo - Ansible - Terraform - AWS

ansible-playbook --inventory=terraform-inventory ../main.yaml

#atix #graz19 #IaC

Page 26: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Demo - Ansible - terraform - AWS

---- hosts: localhost

connection: localgather_facts: Falsetasks:- name: Run terraform

terraform:project_path: '{{ project_dir }}'state: presentvariables:

counts : "{{ counts | default(1)}}"- name: Reload inventory

meta: refresh_inventory

- hosts: "aws"remote_user: userbecome: trueroles:- role: nginx

...

#atix #graz19 #IaC

Page 27: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Terraform Code

provider "aws" {region = "${var.region}"shared_credentials_file = "${var.loc}"profile = "${var.profile}"

}

#atix #graz19 #IaC

Page 28: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Terraform Code

resource "aws_instance" "web" {count = "${var.counts}"ami = "${var.ami}"instance_type = "${var.ami_type}"key_name = "${var.aws_keyname}"vpc_security_group_ids = ["${var.sg_id}"]provisioner "remote-exec" {

inline = ["sudo apt-get update && sudo apt -y install python",

]connection {

type = "ssh"user = "ubuntu"private_key = "${file(var.pkey)}"agent = false

}}tags {

Name = "${var.aws_tag}-${count.index}"}

}

#atix #graz19 #IaC

Page 29: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Demo - Ansible - Terraform - AWS

#atix #graz19 #IaC

Page 30: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

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 #graz19 #IaC

Page 31: Terraform - Ein Einblick der Möglichkeiten von ... · Terraform-Kurzbeschreibung I Sicherundvorhersagbar I Erstellen,Ändern,Verbessern derInfrastruktur I Kombinationvon verschiedenenProvidern

Terraform - Ein Versuch ist es Wert

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

#atix #graz19 #IaC


Recommended