Terraform Resources
Working with Terraform resources and data sources.
Data Sources
data "aws_ami" "ubuntu" {
most_recent = true
filter {
name = "name"
values = ["ubuntu/images/*"]
}
}
# Use data source
ami = data.aws_ami.ubuntu.id
Resource Dependencies
resource "aws_eip" "ip" {
instance = aws_instance.web.id # implicit dependency
}
resource "aws_instance" "app" {
depends_on = [aws_db_instance.db] # explicit dependency
}
Count & For Each
# Count
resource "aws_instance" "server" {
count = 3
ami = "ami-123"
instance_type = "t2.micro"
}
# For Each
resource "aws_instance" "server" {
for_each = toset(["dev", "prod"])
tags = { Name = each.key }
}
Lifecycle Rules
lifecycle {
create_before_destroy = true # create new before deleting old
prevent_destroy = false # prevent accidental deletion
ignore_changes = [tags] # ignore specific changes
}