Say you want to compare 2 lists with n maps in them. You're not sure, in fact you're certain, that the order cannot be relied upon. How can do do this?
The term is Symmetric Difference. I figured this out as part of my delve into terraform test. Here's how you can do it:
main.tf:
locals {
tag_set_1 = [
{
"Key": "workspace",
"Value": "default"
},
{
"Key": "terraform",
"Value": "true"
},
{
"Key": "environment",
"Value": "drew"
}
]
tag_set_2 = [
{
"Key": "workspace",
"Value": "default"
},
{
"Key": "environment",
"Value": "drew"
},
{
"Key": "terraform",
"Value": "true"
}
]
}
output equality_check {
value = length(setunion(setsubtract(local.tag_set_2, local.tag_set_1), setsubtract(local.tag_set_1, local.tag_set_2))) == 0
}
Try it out!
$ terraform apply
Outputs:
equality_check = true
Try it out locally using terraform console
(instead of terraform apply
:
$ echo 'length(setunion(setsubtract(local.tag_set_2, local.tag_set_1), setsubtract(local.tag_set_1, local.tag_set_2))) == 0' | terraform console
true
Top comments (0)