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
Top Related