【发布时间】:2022-11-16 02:52:37
【问题描述】:
我已经搜索并尝试了很多,但还没有找到解决方案。
我正在尝试通过“azurerm_resource_provider_registration”资源管理订阅提供商和预览功能。
如果我只想使用以下方法管理具有多个子功能的一个提供商,我已经可以正常工作了:
tfvars 文件
provider_name = "Microsoft.Network"
provider_feature_name = {
feature1 = {
feature_name = "BypassCnameCheckForCustomDomainDeletion"
registered = true
}
feature2 = {
feature_name = "AllowTcpPort25Out"
registered = true
}
}
主程序
resource "azurerm_resource_provider_registration" "provider_registration" {
name = var.provider_name
dynamic "feature" {
for_each = var.provider_feature_name
content {
name = feature.value.feature_name
registered = feature.value.registered
}
}
}
如果我只想管理一个提供商及其功能,效果很好。
当/如果我想添加一个额外的“provider_name”时,问题就来了。我尝试了一个单独的 provider_name 块,但我不断收到“此处出现意外块”错误。如果我像这样引入一个块;
变量.tf
provider_name = {
provider1 = {
provider_name = "Microsoft.Network" {
feature1 = {
feature_name = "test"
registered = true
}
}
}
provider2 = {
provider_name = "Microsoft.Storage" {
feature2 = {
feature_name = "test2"
registered = true
}
}
}
}
主文件
resource "azurerm_resource_provider_registration" "provider_registration" {
for_each = var.provider_name
name = each.value.provider_name
dynamic "feature" {
for_each = var.provider_feature_name
content {
name = feature.value.feature_name
registered = feature.value.registered
}
}
我可以让它循环,但不能让它仅将 feature1 关联到提供者 1 等,因为这些功能是该提供者独有的。它将 feature1 关联到提供者 1 和 2。
如果我尝试为“名称”值引入 for_each 或动态组,它会出现“此处不希望提供类型块”和/或“需要参数名称但未找到定义”
简而言之,我怎样才能让我的 main 遍历每个 provider_name 并且只将功能的子块与该提供者相关联(每个提供者类型可能有多个功能)。这种类型的资源是不可能的吗?或者我只是没有正确理解 loop/for_each 文档。
任何帮助表示赞赏
谢谢你。
【问题讨论】:
标签: loops terraform terraform-provider-azure