0

下面的代码有效,但我无法在 vcn 名称的末尾添加 -vcn,而且我无法确保 vcn 位于它打算放置的隔间中。

我的 variables.tf 看起来像 -

#Compartment

variable "pv_compartment" {
  type = map(string)
  description = "Compartment Details"
}
variable "pv_enable_delete" {
  description = "enable duplicate check on compartment names and delete on destroy"
}
variable "pv_subtenancy_ocid" {
    description = "sub-tenancy ocid"
}

# VCN
variable "pv_vcn" {
  type = map(string)
  description = "VCN Details"
}

我的 main.tf 看起来像 -

resource "oci_identity_compartment" "tf_compartment" {
    for_each = var.pv_compartment
    compartment_id = var.pv_subtenancy_ocid
    description = each.value
    name = each.key
    enable_delete = var.pv_enable_delete
}

resource "oci_core_vcn" "tf_vcn" {
    count = length(var.pv_vcn)
    cidr_block = values(var.pv_vcn)[count.index]
    compartment_id = element([for x in oci_identity_compartment.tf_compartment: x.id], count.index)
    display_name = keys(var.pv_vcn)[count.index]
}

我的 terraform.tfvars 看起来像 -

pv_subtenancy_ocid = "ocid1.tenancy.oc1..aaaaaaaa"
pv_compartment = {
  mngmt-compartment = "Management Services Compartment"
  app-compartment = "Application Compartment"
  dmz-compartment = "DMZ Compartment"
  db-compartment = "DB Compartment"
}
pv_enable_delete = "true"

#VCN Details
pv_vcn = {
  mngmt = "10.234.0.0/23"
  app = "10.234.10.0/23"
  dmz = "10.234.2.0/23"
  db = "10.234.16.0/23"
}
4

2 回答 2

0

@Kalyan

您的代码实际上只需进行非常小的修改即可正常运行 - 我从 cloud shell 对其进行了测试。

我做过的模组:

  1. 在 terraform.tfvars 中使用了隔间 ID 而不是变量中的租户 ID pv_subtenancy_ocid(因为我无权在根目录下创建子隔间)。如果您有权在根目录下创建资源(子隔间),则在您的情况下这可能不是必需的。
  2. 在 main.tf 中,正如@mrtaylor2112 所建议的那样,添加了一个像这样的插值 display_name = "${keys(var.pv_vcn)[count.index]}-vcn"

通过适当的授权和提供程序设置,配置按预期构建和应用,在其相应的子隔间中创建 VCN。

问候

于 2020-08-13T19:35:42.730 回答
0

请像这样使用 concat:

${var.label_prefix}-${var.vcn_name}
于 2020-08-12T21:14:39.690 回答