Terraform .id说明

时间:2018-09-12 10:31:57

标签: 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}"
}

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}

如果有人可以用其他词语和示例向我解释它,我将不胜感激。

1 个答案:

答案 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