Terraform Module Skeleton#
Standart bir Terraform modülü iskeleti:
main.tf+variables.tf+outputs.tf. Kopyala, kendi kaynağına göre doldur.
Dosyalar#
| Dosya | Amaç |
|---|---|
main.tf | Kaynak tanımları + terraform/required_providers bloğu |
variables.tf | Tip-güvenli, açıklamalı, validation'lı girdi değişkenleri |
outputs.tf | Modülü tüketen kaynaklar için çıktılar |
Kullanım#
# Modülü kendi root config'inden çağır
module "<MODULE_NAME>" {
source = "git::https://github.com/<ORG>/<REPO>.git//17-Templates/terraform?ref=<VERSION>"
name = "<NAME>"
environment = "<ENV>"
tags = { team = "<TEAM>", owner = "<OWNER>" }
}
Neden bu yapı#
- 3 dosya ayrımı standarttır: kaynaklar, girdiler, çıktılar ayrı okunur.
variables.tfvalidation'lı: yanlış girdiplanaşamasında patlar,apply'da değil.- Versiyon pin'i (
required_providers): provider upgrade'i sürpriz drift yaratmasın.
"Modül, kopyalanan değil çağrılan koddur — girdi/çıktı sözleşmesi nettir."