Struktur
Standard-Layout: main.tf,
variables.tf, outputs.tf
(+ README). Kleine, fachlich geschnittene Module;
Komposition flach im Root-Modul. Tiefe
Modul-in-Modul-Ketten machen Plans träge und Schnittstellen
unklar.
Quellen, Versionierung
Registry-Quelle <ns>/<name>/<provider>
+ version (nur Registry-Quellen unterstützen
version).
Git-Quelle über ?ref= auf Tag/Commit
pinnen, nie auf einen beweglichen Branch.
Seit 1.15 dürfen source/version
Variablen und Locals enthalten; die Variable braucht
const = true (zur init-Zeit bekannt,
nicht sensitive/ephemeral). Seit 1.17 gilt das auch in
required_providers.
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "6.7.3"
name = local.name_prefix
cidr = "10.20.0.0/16"
}
module "baseline" {
source = "git::https://git.example.com/baseline.git?ref=v2.3.1"
}