Modules + Output from for_each
Using for_each with modules in Terraform allows you to dynamically create multiple instances of a module and manage their outputs effectively. This is particularly useful for scaling and managing similar resources.
Why Use for_each with Modules?
- Dynamic Resource Creation: Create multiple instances of a module with different configurations.
- Simplified Code: Reduce repetition in your Terraform configuration.
- Centralized Management: Manage similar resources through a single module.
Example: Creating Multiple VPCs
Here's how to use for_each with a module to create multiple VPCs:
Step 1: Define the Module
Create a module for VPC creation in modules/vpc/main.tf:
resource "aws_vpc" "example" {
cidr_block = var.cidr_block
tags = {
Name = var.name
}
}
variable "cidr_block" {}
variable "name" {}
Step 2: Use the Module with for_each
In your main configuration, use for_each to create multiple VPCs:
module "vpcs" {
source = "./modules/vpc"
for_each = {
vpc1 = { cidr_block = "10.0.0.0/16", name = "VPC1" }
vpc2 = { cidr_block = "10.1.0.0/16", name = "VPC2" }
}
cidr_block = each.value.cidr_block
name = each.value.name
}
Step 3: Output the Results
Use outputs to expose information about the created VPCs:
output "vpc_ids" {
value = { for k, v in module.vpcs : k => v.id }
}
Explanation
for_each: Iterates through a map of VPC configurations.each.value: Accesses the current map value in the iteration.output: Dynamically generates a map of VPC IDs.
Best Practices
- Use descriptive keys in your
for_eachmap for better readability. - Validate input data to ensure it meets your requirements.
- Keep modules reusable by parameterizing them with variables.
By using for_each with modules, you can efficiently manage dynamic resources and outputs in Terraform.
We earn commissions when you shop through the links below.
DigitalOcean
Cloud infrastructure for developers
Simple, reliable cloud computing designed for developers
DevDojo
Developer community & tools
Join a community of developers sharing knowledge and tools
Acronis
The most secure backup
Acronis: the most secure backup solution for your data
Want to support DevOps Daily and reach thousands of developers?
Become a SponsorFound an issue?