terraform |
Settings for Terraform itself — required version, backends, required providers |
terraform { required_version = ">= 1.5" } |
provider |
Configures a specific cloud or service plugin (AWS, Azure, GCP, etc.) with credentials and region |
provider "aws" { region = "eu-west-2" } |
resource |
Declares something Terraform will create, update, or delete |
resource "aws_s3_bucket" "logs" { ... } |
data |
Read-only lookup of an existing resource that Terraform did NOT create |
data "aws_vpc" "main" { id = "vpc-123" } |
variable |
Input parameter to a module — can have defaults, types, validation |
variable "region" { type = string } |
output |
Value returned by a module — exposes things like IDs, ARNs, IPs |
output "bucket_arn" { value = aws_s3_bucket.logs.arn } |
module |
Reusable group of resources defined in another directory or registry |
module "vpc" { source = "terraform-aws-modules/vpc/aws" } |
locals |
Named expressions used inside the module (like local variables) |
locals { common_tags = { ... } } |