Как создать несколько VCN одновременно

У меня проблема, мне нужно создать более одного VCN.

Я хочу установить переменные в файл JSON. нравится:

init_values.json

      {
  "terraform": {
    "tenancy_ocid": "ocid1.ten.xxxxxxxxxxxxxxxxxx",
    "user_ocid": "ocid1.user..xxxxxxxxxxxxxxxxxx",
    "private_key_path": "/Users/user/.oci/oci_api_key.pem",
    "fingerprint": "a8:8e:.xxxxxxxxxxxxxxxxxx",
    "region": "eu-frankfurt-1"
  },
  "vcn": [
    {
      "name": "vcn_1",
      "cidr": "44.144.224.0/25"
    },
    {
      "name": "vcn_2",
      "cidr": "44.144.224.128/25"
    }
  ]
}

и мой vcn.tf файл lokks , как это

      locals {
  vcn_data = jsondecode(file("${path.module}/init_values.json"))

  all_vcn = [for my_vcn in local.vcn_data.vcn : my_vcn.name ]
  all_cidr = [for my_cidr in local.vcn_data.vcn : my_cidr.cidr ]
}


resource "oci_core_vcn" "these" {
  compartment_id  = local.json_data.COMPARTMENT.root_compartment
  display_name = local.all_vcn
  cidr_block = local.all_cidr
}

и provider.tf :

      provider "oci" {
  //alias             = "home"
  tenancy_ocid      = local.json_data.TERRAFORM.tenancy_ocid
  user_ocid         = local.json_data.TERRAFORM.user_ocid
  private_key_path  = local.json_data.TERRAFORM.private_key_path
  fingerprint       = local.json_data.TERRAFORM.fingerprint
  region            = local.json_data.TERRAFORM.region
}

и ошибка следующая:

      │ Error: Incorrect attribute value type
│ 
│   on vcn.tf line 39, in resource "oci_core_vcn" "these":
│   39:   display_name = local.all_vcn
│     ├────────────────
│     │ local.all_vcn is tuple with 2 elements
│ 
│ Inappropriate value for attribute "display_name": string required.
╵

в чем может быть моя ошибка, где я ошибаюсь

Спасибо

1 ответ

Наверное, вместо:

      all_cidr = [for my_cidr in local.vcn_data.vcn : my_vcn.cidr ]

так должно быть:

      all_cidr = [for my_cidr in local.vcn_data.vcn : my_cidr.cidr ]

Обновлять

Вы должны использовать countили же for_eachдля создания нескольких vcns:

      resource "oci_core_vcn" "these" {
  
  count = length(local.all_vcn)

  compartment_id  = local.json_data.COMPARTMENT.root_compartment

  display_name = local.all_vcn[each.index]
  cidr_block = local.all_cidr[each.index]
}
Другие вопросы по тегам