【问题标题】:How to get compartment ID by name in Terraform OCI如何在 Terraform OCI 中按名称获取隔间 ID
【发布时间】:2022-06-27 01:46:20
【问题描述】:

将 Terraform v1.1.6 与提供者 OCI 一起使用。我想在 现有 父隔间下创建一个新的子隔间,我只有“名称”。例如,目前,我使用父 ID 创建一个新的隔间:

resource "oci_identity_compartment" "compartment" {
  compartment_id = var.compartment_id
  name           = "child_compartment"
}

但是,我想做这样的事情,我只知道父母的“名字”......

resource "oci_identity_compartment" "compartment" {
  compartment_name = "parent-name"
  name           = "child-compartment"
}

这可能吗?能否以某种方式使用 Terraform 的数据源来查找父级的名称并返回其 ID,如果可以,如何?

【问题讨论】:

  • 好吧,据我在文档中看到的,您无法提供名称,只能提供 id,因此似乎不可能。换句话说,compartment_name 不是oci_identity_compartment 的有效参数。
  • 我知道compartment_name 不是一个东西,但我在想也许我们可以使用来自数据源的名称来查询 ID?
  • 我认为你可以。
  • 你有想过这个吗?

标签: terraform


【解决方案1】:

有一个“解决方案”,但它不是通用的,它假定所有隔间名称都是唯一的; A:B:C 和 A:X:C 完全有可能毁掉接下来发生的事情。

您可以使用 oci 数据源 oci_identity_compartments 递归地列出租户中的所有隔间,即您提供租户 ocid 作为起始隔间_id。如果您“知道”您选择的父母是独一无二的,那么您可以执行以下操作:

data "oci_identity_compartments" "this" {
  compartment_id = var.tenancy_ocid
  compartment_in_subtree = true
  name = var.my_parent_name
}

然后你可以创建一个新的隔间:

resource "oci_identity_compartment" "this" {
  provider = oci.homeregion
  compartment_id = data.oci_identity_compartments.this.compartments[0].id
  description = "Some text"
  name = "my_compartment"
}

注意:您只能从您的家乡创建隔间

但如果您有相同的大{1,4}子隔间,它就行不通了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多