【问题标题】:Terraform Cosmosdb multiple subnetTerraform Cosmosdb 多个子网
【发布时间】:2021-10-10 06:41:09
【问题描述】:

Terraform Cosmosdb 多个子网 为 cosmosdb 添加额外子网时出错

地形错误:

Error: Invalid value for module argument

  on manifests/backend.tf line 289, in module "cosmosdb_1":
 289:   vnet_subnet_id               = ["azurerm_subnet.backend.id", "azurerm_subnet.application.id", "azurerm_subnet.frontend.id"]

The given value is not suitable for child module variable "vnet_subnet_id"
defined at modules/cosmosdb/variable.tf:26,1-26: element 0: object required.

main.tf 子网定义变量的配置

  dynamic "virtual_network_rule" {
    for_each = var.virtual_network_rule != null ? toset(var.virtual_network_rule) : []
    content {
      id                                   = [var.vnet_subnet_id]
      ignore_missing_vnet_service_endpoint = virtual_network_rule.value.ignore_missing_vnet_service_endpoint
    }
  }

variable.tf 文件定义变量类型

variable "vnet_subnet_id" {
  type = list(object({
    id                                   = string,
    ignore_missing_vnet_service_endpoint = bool
  }))
}

在 backend.tf 中定义的 vnet 子网的主要配置

module "cosmosdb_1" {
  depends_on                   = [module.vnet]
  source                       = "./../modules/cosmosdb"
  cosmodb_account_name         = "${var.env}${var.cosmodb_account_name_1}"
  resource_group_name          = "${var.env}-bsai"
  ip_range_filter              = var.ip_range_filter
  location                     = "${var.region}"
  cosmosdb_name                = var.cosmosdb_name_1
  enable_automatic_failover    = var.enable_automatic_failover
  failover_location_secondary  = var.failover_location_secondary
  failover_priority_secondary  = var.failover_priority_secondary
  vnet_subnet_id               = ["azurerm_subnet.backend.id", "azurerm_subnet.application.id", "azurerm_subnet.frontend.id"]
}

【问题讨论】:

    标签: azure-devops terraform azure-cosmosdb terraform-provider-azure terraform0.12+


    【解决方案1】:

    解决方案:

    模块:main.tf

      dynamic "virtual_network_rule" {
        for_each = var.vnet_subnet_id
        content {
          id   = virtual_network_rule.value.id
          ignore_missing_vnet_service_endpoint = true
        }
      }
    

    变量.tf

    variable "vnet_subnet_id" {
      description = "List of subnets to be used in Cosmosdb."
      type = list(object({
        id   = string
      }))
    }
    

    后端.tf

    vnet_subnet_id               = [{id   = azurerm_subnet.backend.id}, {id = azurerm_subnet.application.id}, {id = azurerm_subnet.frontend.id}]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-27
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      • 2022-07-06
      • 2018-07-09
      相关资源
      最近更新 更多