我是 Terraform 的新手,正在尝试在 Azure 上创建一些资源。对我来说,资源名称和属性之间似乎存在一些不必要的重复name
在定义中。
resource "azurerm_resource_group" "group_name" {
name = "group_name" # <-- repeated!
location = "${local.location}"
}
有区别吗?我可以本着这样的精神将它们设置为相同吗:
resource "azurerm_resource_group" "group_name" {
name = "${name}"
location = "${local.location}"
}
这里的两个名称有不同的用途和不同的范围。
块头中显示的名称是单个 Terraform 模块中使用的本地名称。将一种资源的结果插入另一种资源时非常有用,例如${azurerm_resource_group.group_name}
。远程 API 永远不会看到这个名称;它仅用于内部参考。
The name
within块是特定于资源类型本身的属性——azurerm_resource_group
在这种情况下。该名称将被发送到远程 API,并将成为 AzureRM 系统本身描述对象的方式。
在小型组织内的简单配置中,这两个名称确实有可能匹配。在实践中,这些名称之间的范围差异导致它们经常发生变化。例如:
- 如果有多个单独的团队或应用程序共享 AzureRM 帐户,则 API 使用的名称可能需要添加前缀,以避免与其他团队或应用程序创建的名称发生冲突,而本地名称仅在其所在的模块内需要是唯一的定义的。
- 在更复杂的子模块使用中,通常会多次实例化同一个子模块。在这种情况下,所有实例之间的本地名称都是相同的(因为它仅在该实例中才有意义),但需要针对每个实例调整 API 使用的名称,以便它们不会发生冲突。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)