Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Terrraform list of objects syntax

I'm using a module that references a central module used to build a Puppet server in terraform. There is one variable in the root module that allows additional tags to be used with the ASG however I can't seem to get the syntax right. This is the information in the core repository:

   variable "additional_asg_tags" {
  description = "A map of additional tags to add to the puppet server ASG."
  type        = list(object({ key = string, value = string, propagate_at_launch = bool }))
  default     = []
}

I've tried everything I can think of to call this but it always errors with messages like "incorrect list element type: string required." or "This default value is not compatible with the variable's type constraint: list of object required."

I'm trying to call the above with something like;

variable "additional_asg_tags" {
  description = "A map of additional tags to add to ASG."
  type        = list(object({ key = string, value = string, propagate_at_launch = bool }))
  default     = { key = "Name", value = "Puppet-nonprod", propagate_at_launch = "true" 
 }
}

I've removed the square braces around this as that was causing errors also but I may need to add these back in.

Can someone help please in what is the correct way to reference a list of objects with these values

like image 563
scrow Avatar asked Nov 02 '25 07:11

scrow


1 Answers

The correct default value for your additional_asg_tags is a list:

variable "additional_asg_tags" {

  description = "A map of additional tags to add to ASG."
  
  type = list(object({
               key = string, 
               value = string, 
               propagate_at_launch = bool
            }))
            
  default = [{ 
        key = "Name", 
        value = "Puppet-nonprod", 
        propagate_at_launch = "true" 
   }]
}

You can reference individual elements as follows (some examples):

var.additional_asg_tags[0]["key"]

var.additional_asg_tags[0].value

# to get list 
var.additional_asg_tags[*].propagate_at_launch
like image 102
Marcin Avatar answered Nov 04 '25 00:11

Marcin



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!