azure - azure/vnet/azurerm terraform 模块中子网委托(delegate) block 的正确语法是什么?

标签 azure terraform terraform-modules

我想使用 azure/vnet/azurerm Terraform 模块 ( https://registry.terraform.io/modules/Azure/vnet/azurerm/latest ) 将 Vnet 部署到 azure。

module "vnet" {
  source              = "Azure/vnet/azurerm"
  resource_group_name = "my-resources"
  address_space       = ["10.0.0.0/16"]
  subnet_prefixes     = ["10.0.1.0/24", "10.0.2.0/24"]
  subnet_names        = ["subnet1", "subnet2"]

  subnet_delegation = {
    subnet2 = {
      name    = "Microsoft.DBforPostgreSQL/flexibleServers"
      actions = "Microsoft.Network/virtualNetworks/subnets/join/action"
    }
  }
}

我编写了这段代码,当我想要“terraform plan”时,我收到此错误:

Error: Invalid function argument
│ 
│   on .terraform/modules/vnet/main.tf line 30, in resource "azurerm_subnet" "subnet":
│   30:         name    = lookup(delegation.value, "service_name")
│     ├────────────────
│     │ delegation.value is "Microsoft.Network/virtualNetworks/subnets/join/action"
│ 
│ Invalid value for "inputMap" parameter: lookup() requires a map as the first argument.


Error: Invalid function argument
│ 
│   on .terraform/modules/vnet/main.tf line 30, in resource "azurerm_subnet" "subnet":
│   30:         name    = lookup(delegation.value, "service_name")
│     ├────────────────
│     │ delegation.value is "Microsoft.DBforPostgreSQL/flexibleServers"
│ 
│ Invalid value for "inputMap" parameter: lookup() requires a map as the first argument.

是否有人已经使用过此模块并使用了子网委派? 我需要“subnet_delegation”的语法以避免此错误。

谢谢!

最佳答案

这是该 block 的示例,取自 here .

subnet_delegation = {
    subnet2 = {
      "Microsoft.Sql.managedInstances" = {
        service_name = "Microsoft.Sql/managedInstances"
        service_actions = [
          "Microsoft.Network/virtualNetworks/subnets/join/action",
          "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action",
          "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action",
        ]
      }
    }
  }

关于azure - azure/vnet/azurerm terraform 模块中子网委托(delegate) block 的正确语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71924734/

相关文章:

azure - 使用运行时 4、.NET 6 在进程外运行 Azure 函数时遇到问题

Azure 数据工厂 - 读取 JSON 数组并写入单个 CSV 文件

java - 在 Docker 中运行启动脚本

ubuntu - Terraform 无法在 Ubuntu 16.04 上安装 haproxy?

terraform-provider-azure - Terraform 输出变量用作输入变量

azure - 如何在terraform中的for_each中编写条件

Asp.net Core 身份 - Azure 身份验证中间件

terraform - 为什么我需要 "update"路径上的 "auth/token/create"功能来读取 AWS secret 引擎生成的 secret ?

amazon-ec2 - 解析错误 Terraform

amazon-web-services - 地形错误 : Invalid value for module argument