Dominik Jakielski SSE @ Adesso SE · 2020-02-18 · 35 17.02.20 Meine Erfahrungen / Fazit...

Preview:

Citation preview

AWS user group DortmundDominik Jakielski

SSE @ Adesso SE

Terraforming your aws cosmos

Agenda17.02.202

Agenda

• Probleme in der Infrastruktur

• Grundlagen Terraform

• RDS Demo

• Meine Erfahrungen / Fazit

• Diskussionsrunde

Probleme in der Infrastruktur17.02.203

Probleme in der Infrastruktur

Probleme in der Infrastruktur17.02.204

Single point of knowlege

AWS Guru

Verlässt das Projekt

Dokumentation brauchte er nicht für sich

ProductLeed

Developer

ProductOwner

Project Manager

Security Manager

Junior Developer

Steak HolderHR

Manager

Senior Developer

Frontend Developer

Corporate Designer

Probleme in der Infrastruktur17.02.205

AWS Guru weg, Entwicklungsteam ratlos, was nun?

Grundlagen Terraform17.02.206

Eine Lösung kann Infrastructure as Code sein

Grundlagen Terraform17.02.207

Infrastructure as Code ?

?

Grundlagen Terraform17.02.208

Provider

Grundlagen Terraform17.02.209

Provider

Grundlagen Terraform17.02.2010

Ressources

Grundlagen Terraform17.02.2011

Ressources

Grundlagen Terraform17.02.2012

Ressource

Mysql RDS Instance

NameTyp

Attribute

RDS instancenameidentifyer

Grundlagen Terraform17.02.2013

Data

NameTypSelektionswerte

Referenzierung

Grundlagen Terraform17.02.2014

Referenzen

Grundlagen Terraform17.02.2015

Input, output und lokale Variablen

Grundlagen Terraform17.02.2016

Module

Main

Lokales eigenes Modul

Offizielles Community

Modul

Company Enterprise

Modul

Submodul Submodul Submodul Submodul

Sub-subModul

Grundlagen Terraform17.02.2017

Module

Grundlagen Terraform17.02.2018

Module Registry

https://registry.terraform.com

https://github.com/terraform-aws-modules

Grundlagen Terraform17.02.2019

Funktionen

Grundlagen Terraform17.02.2020

Remote State

Grundlagen Terraform17.02.2021

Remote State

Grundlagen Terraform17.02.2022

Remote State

Infrastruktur

Terraform.tfstate

S3, Atlas, DynamoDB, Consul, etcd, HTTP, Terraform Enterprise

Remote State

Terraform Projekt

Grundlagen Terraform17.02.2023

Remote State

Grundlagen Terraform17.02.2024

Workspaces

Grundlagen Terraform17.02.2025

Wichtigsten CLI Commands

• Init

• Plan

• Apply

Grundlagen Terraform17.02.2026

Terraform init

Grundlagen Terraform17.02.2027

Terraform plan

Grundlagen Terraform17.02.2028

Terraform plan

Grundlagen Terraform17.02.2029

Terraform apply

Grundlagen Terraform17.02.2030

Weiter nützliche CLI Commands

• State rm / mv

• Import

• output

• workspace

RDS Demo17.02.2031

RDS Demo

Unsere Aufgabe

• Dev System mit

• RDS Mysql Instanz t3.micro

• Datenbank A mit zugriff für User A

• Datenbank B mit zugriff für User B

• Neue Prod Umgebung erstellen

• DB auf t3.small vergößern

Meine Erfahrungen / Fazit17.02.2032

Meine Erfahrungen / Fazit

Meine Erfahrungen / Fazit17.02.2033

Meine Erfahrungen / Fazit

Aber!?

Meine Erfahrungen / Fazit17.02.2034

Herausforderungen & Probleme

Meine Erfahrungen / Fazit17.02.2035

Herausforderungen / Probleme

• Whitespace changes & Encondig --> vermeidlichen Änderungen ?xbj`dj?dm

• Backup vom State wichtig !!! Am besten versioniert

• Destroy für einzelne Ressourcen oder Module funktioniert nicht so wirklich

• Prevent Destroy zeigt nicht den Grund des Löschens an

• Provider kann erst gelöscht werden, nach dem alle seine Ressourcen destroyed wurden

• Abhängigkeitsauflösung benötigt manchmal Unterstützung (depends on)

• Recreate kann zu Problemen führen (evt. API restriktionen)

• Api-Änderungen erfordern Codeanpassung (Beispiel Cognito)

• Helm Provider buggy

• Testen schwierig, eher „try and error“ Prinzip, Testtools kommen (kitchen-terraform)

Q&A17.02.2036

Danke

Q&A17.02.2037

Diskussionsrunde

RDS Demo Code

Recommended