我是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}"
}
和
subnet_id = "${data.azurerm_subnet.aas_mng_subnet.id}"
subnet_id
值是什么?
我的意思是一般而言-并非仅针对此示例。
.id
属性在每个显示位置的值是什么?
Terraform documentation试图解释这一点,但我不确定我是否仍然理解:
数据源的属性
语法为data.TYPE.NAME.ATTRIBUTE。 例如。
${data.aws_ami.ubuntu.id}
将插值id
来自aws_ami
数据源ubuntu
的属性。如果数据 源具有一个count属性集,您可以访问各个属性 从零开始的索引,例如${data.aws_subnet.example.0.cidr_block}
。您也可以使用splat 语法以获取所有属性的列表:${data.aws_subnet.example.*.cidr_block}
。
如果有人可以用其他词语和示例向我解释它,我将不胜感激。
答案 0 :(得分:1)
这是Azure返回的子网ID,因此应类似于/subscriptions/subid/resourceGroups/subnet-test/providers/Microsoft.Network/virtualNetworks/vnetname/subnets/subnet1
。
其他资源和其他提供者将返回ID的其他内容,但总的来说,原则是资源的ID对于提供者而言是唯一的(因此,帐户以及可能与之区分的其他任何事物,例如区域)。
我不太了解Azure提供程序,但是例如aws_instance
resource将返回一个ID,该ID是看起来像i-abcdef1234567890
和创建应用程序的aws_lb
resource的实例ID / Network负载平衡器的ID为ARN (Amazon Resource Name),看起来像arn:aws:elasticloadbalancing:$REGION_NAME:$ACCOUNT_NUMBER:loadbalancer/app/my-example-alb/abcdef1234567890
。