How to get list of zone ids and assign to respective projects dynamically?
locals {
instances = csvdecode(file("./projects.csv"))
}
data from csv file
project_zones = [
{
"description" = "test_terra2_desc"
"name" = "test_terra2"
"zone_name" = "[\"Zone4\"]"
},
{
"description" = "test_terra3_desc"
"name" = "test_terra3"
"zone_name" = "[\"Zone4\", \"Zone3\"]"
},
]
convert to json format
test =[for r in local.instances:
{
name = r.name
description = r.description
zone_name = jsondecode(r.zone_name)
}
]
project_zones = [
{
"description" = "test_terra2_desc"
"name" = "test_terra2"
"zone_name" = ["Zone4"]
},
{
"description" = "test_terra3_desc"
"name" = "test_terra3"
"zone_name" = ["Zone4", "Zone3"]
},
]
with above data need to VRA create projects and zone assignments.
provider "VRA" {
}
data "vra_zone" "this" {
for_each = {for k, name in flatten(local.test[*].zone_name) : k => name}
name = each.value
}
resource "vra_project" "this" {
for_each = { for k, name in local.test : k => name}
name = each.value.name
description = each.value.description
dynamic "zone_assignments" {
for_each= data.vra_zone.this.id
content {
zone_id = zone_assignments.value["id"]
priority = 1
max_instances = 2
cpu_limit = 1024
memory_limit_mb = 8192
storage_limit_gb = 65536
}
}
}
zone assignments mismatch with projects. I want test_terra1/[“zone4”], test_terra2/[“Zone4”, “Zone3”], but as per above code terraform will perform like test_terra1/[“zone4”, “zone3”], test_terra2/[“Zone4”, “Zone3”]… I would like to know how to retrieve zone ids from data.vra_zone.this and assign into respective projects. Thanks in advance!