Infrastructure as Code mit Terraform. Deklarativ, reproduzierbar, versionierbar.
Was ist Terraform¶
Ein deklaratives Werkzeug zur Verwaltung von Infrastruktur. Sie beschreiben, was Sie wollen, Terraform erstellt es.
Grundlegender Workflow¶
terraform init # laedt Provider herunter
terraform plan # zeigt Aenderungen
terraform apply # wendet Aenderungen an
terraform destroy # loescht alles
HCL-Syntax¶
provider “aws” { region = “eu-west-1” }
resource “aws_instance” “web” {
ami = “ami-12345”
instance_type = “t3.micro”
tags = { Name = “web-server” }
}
State¶
Terraform speichert den Zustand der Infrastruktur. Im Team verwenden Sie Remote State (S3 + DynamoDB Lock).
terraform { backend “s3” { bucket = “tf-state” key = “prod/terraform.tfstate” region = “eu-west-1” } }
Variablen¶
variable “instance_type” { default = “t3.micro” type = string }
variable “tags” { type = map(string) }
Module¶
module “vpc” {
source = “./modules/vpc”
cidr = “10.0.0.0/16”
}
Best Practices¶
- Remote State mit Locking
- Kleine, fokussierte Module
- terraform plan in CI/CD
- Immutable Infrastructure
- Tagging-Konvention
Tipp¶
Aendern Sie die Infrastruktur niemals manuell. Alles ueber Terraform. Drift = Probleme.