Terraform State'i Git'e Koymak
Private repo da secret saklamaz

İlk günler state yereldeydi. İkinci kişi gelince dosyayı repo'ya koyduk. .gitignore'a yazmayı unuttuğumuz bir kopya da girdi. Private repo, history'yi daraltmaz. Clone alan herkes state'i alır; ayrılan kişinin kopyası da laptop'ta kalır.
State ne taşır
Resource adresi, çıktı, bazen düz metin attribute. RDS endpoint. Bucket adı. sensitive işaretlemediğin output. Secret manager ARN'si masum durur; yanında yanlışlıkla yazılmış bir parola da durabilir. Git, bunu commit mesajı kadar uzun hatırlar.
terraform {
backend "s3" {
bucket = "tfstate-app-prod"
key = "prod/terraform.tfstate"
region = "eu-central-1"
dynamodb_table = "tfstate-lock"
encrypt = true
}
}
Bucket ayrı hesapta durabilir. Versioning açık, public access block açık, kilit tablosu olmadan iki apply aynı anda state'i ezer. encrypt = true varsayılan sanılıyor; yazılmazsa yazılmaz.
Git'e düştüyse
Dosyayı silmek yetmez. History'den düşürmek, rotate etmek. Endpoint değişmez ama bağlı secret değişir. 'Private'dı' cümlesi rotate'i iptal etmez. .gitignore + backend'e geçiş aynı PR. State commit'i görürsem pipeline'ı kırmızıya çekiyorum — IAM yıldızı gibi, sonra temizlenmiyor.
Yorumlar
Yorumlar (0)
Yorumlar üyelere açık. Üye ol · Giriş yap