I have recently been learning Terraform and have been looking for an answer to this. Can I use nested loops to create clusters of instances?
My thoughts are that I could loop around the clusters with “for_each”, then (this is the bit i don’t understand how to do) I could loop around a list of node IDs in each cluster and create a number of instances related to each node ID record.
Below is my pseudo code which may better explain what i’m trying to do:
### main.tf ##
module "ec2_instance" {
loop around 'clusters'. Use for_each?
{
loop around 'node_ids'. How?
{
create the current node instance with name of "'cluster_name'.'node_id[i]'" of type 'node_type[i]' here.
}
}
}
#####
### variables.tf ##
variable "clusters" {
type = map(object({
node_id = list(string)
node_type = list(string)
}))
default = {
"cluster_name" = {
node_id = ["node-a", "node-b", "node-c"]
node_type = ["t3.micro", "t3.small", "t3.medium"]
}
}
}
#####
### stuff.tfvars ##
clusters = {
cluster01 = {
node_ids = ["a", "b", "c"]
node_types = ["t3.micro", "t3.small", "t3.medium"]
},
cluster02 = {
node_ids = ["x", "y", "z"]
node_types = ["t3.medium", "t3.small", "t3.small"]
}
}
#####
Any help or insight would be greatly appreciated. I’m very new to Terraform, so this may have been a silly question, but i’ve been stuck trying to do this so figured i’d ask for help.
I’m hoping that if I get an answer to this, I can use it to go one step further and use a list of disks sizes for each node. So that Terraform would be able to create multiple clusters of nodes, each node having different disk sizes.