Terraform .id 说明

dus*_*kin 6 terraform

我是 Terraform 的新手,对id资源返回的属性感到困惑。

鉴于:

data "azurerm_subnet" "aas_mng_subnet" {
  name                 = "${var.prefix}-${var.env_type}-subnet-${var.site_octet}.50.x"
  virtual_network_name = "${data.azurerm_virtual_network.main.name}"
  resource_group_name  = "${var.prefix}-${var.env_type}"
}
Run Code Online (Sandbox Code Playgroud)

subnet_id = "${data.azurerm_subnet.aas_mng_subnet.id}"
Run Code Online (Sandbox Code Playgroud)

价值是多少subnet_id?我的意思是一般情况 - 不是特定于这个例子。.id该属性出现在每个地方的值是多少?

Terraform 文档试图解释这一点,但我不确定我是否仍然理解它:

数据源的属性

语法为 data.TYPE.NAME.ATTRIBUTE。例如。${data.aws_ami.ubuntu.id}将从名为 的数据源插入id 属性。如果数据源设置了计数属性,则可以使用从零开始的索引访问各个属性,例如 。您还可以使用 splat 语法来获取所有属性的列表: 。aws_amiubuntu${data.aws_subnet.example.0.cidr_block}${data.aws_subnet.example.*.cidr_block}

如果有人能用其他词语和/或例子向我解释,我将不胜感激。

yda*_*coR 7

这是 Azure 返回的子网 ID,因此应类似于/subscriptions/subid/resourceGroups/subnet-test/providers/Microsoft.Network/virtualNetworks/vnetname/subnets/subnet1

其他资源和其他提供者将返回 ID 的其他内容,但一般来说,原则是资源的 ID 对于提供者来说是唯一的(因此帐户和其他可能区分它的内容,例如区域)。

我不太了解 Azure 提供商,但例如aws_instance资源将返回一个 ID,该 ID 是实例 ID,看起来类似于i-abcdef1234567890,创建应用程序/网络负载均衡器aws_lb的资源的 ID 是ARN(Amazon 资源名称)看起来像arn:aws:elasticloadbalancing:$REGION_NAME:$ACCOUNT_NUMBER:loadbalancer/app/my-example-alb/abcdef1234567890