首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Terraform表达式for_each无效索引

Terraform表达式for_each无效索引
EN

Stack Overflow用户
提问于 2022-01-13 12:07:23
回答 1查看 233关注 0票数 0

大家好,新年快乐!

我遇到了got的一个问题,got是由集团重新源生成的,下面有一个带有for_each循环的迭代。

我的地图是:

代码语言:javascript
运行
复制
 variable "wvd_hostpool" {
 description = "Please provide the required information to create a WVD hostpool."
 type        = map(any)
 default = {
   hp-azcan-weu-wvd-01 = {
     "name"                             = "hp-azcan-weu-wvd-01"
     "type"                             = "Personal"
     "load_balancer_type"               = "DepthFirst"
     "personal_desktop_assignment_type" = "Automatic"
     "maximum_sessions_allowed"         = 16
     "expiration_date"                  = "2022-02-10T18:46:43Z"
     "friendly_name"                    = "Canary"
     "description"                      = "Dedicated to canary deployments."
     "location"                         = "westeurope"
     "vm_count"                         = 1
     "vm_size"                          = "Standard_F4s_v2"
     "vm_prefix"                        = "AZWEUHP01TST"
     "validate_environment"             = "true"
   },
   hp-azprd-weu-wvd-01 = {
     "name"                             = "hp-azprd-weu-wvd-01"
     "type"                             = "Pooled"
     "load_balancer_type"               = "DepthFirst"
     "personal_desktop_assignment_type" = "Automatic"
     "maximum_sessions_allowed"         = 16
     "expiration_date"                  = "2022-02-10T18:46:43Z"
     "friendly_name"                    = "desktop"
     "description"                      = "Dedicated to medium workload type (Microsoft Word, CLIs, ...)."
     "location"                         = "westeurope"
     "vm_count"                         = 1
     "vm_size"                          = "Standard_F4s_v2"
     "vm_prefix"                        = "AZWEUHP01WKT"
     "validate_environment"             = "false"
   },

重新来源集团:

代码语言:javascript
运行
复制
  resource "azurerm_virtual_desktop_host_pool" "wvd_hostpool" {
  for_each                         = var.wvd_hostpool
  name                             = each.value.name
  location                         = each.value.location
  custom_rdp_properties            = "audiocapturemode:i:1;audiomode:i:0;"
  resource_group_name              = data.azurerm_resource_group.avd_rg.name
  validate_environment             = each.value.validate_environment
  type                             = each.value.type
  load_balancer_type               = each.value.load_balancer_type
  friendly_name                    = each.value.friendly_name
  description                      = each.value.description
  personal_desktop_assignment_type = each.value.personal_desktop_assignment_type
  maximum_sessions_allowed         = each.value.maximum_sessions_allowed

  registration_info {
    expiration_date = each.value.expiration_date
  }
}

我将获取registration_info下生成的令牌的值,以便将其保存到密钥库以供重用,或者将其导出到输出,但您是否看到我得到了一个带有无效索引的错误。我过了两天没成功,你能帮帮我吗?

代码语言:javascript
运行
复制
  resource "azurerm_key_vault_secret" "wvd_registration_info" {
  for_each     = var.wvd_hostpool
  name         = each.value.name
  value        = azurerm_virtual_desktop_host_pool.wvd_hostpool[each.value.name].registration_info.0.token
  key_vault_id = azurerm_key_vault.wvd_key_vault.id
  depends_on   = [azurerm_role_assignment.wvd_sp]
}

同样的结果

代码语言:javascript
运行
复制
Error: Invalid index
│
│   on security.tf line 115, in resource "azurerm_key_vault_secret" "wvd_registration_info":
│  115:   value        = azurerm_virtual_desktop_host_pool.wvd_hostpool[each.value.name].registration_info[0].token
│     ├────────────────
│     │ azurerm_virtual_desktop_host_pool.wvd_hostpool is object with 3 attributes
│     │ each.value.name is "hp-azprd-weu-wvd-02"
│
│ The given key does not identify an element in this collection value: the collection has no elements
EN

回答 1

Stack Overflow用户

发布于 2022-01-13 15:15:46

如果将映射指定为for_each属性,Terraform将使用其键作为将要创建的资源的标识符。这意味着,如果要引用使用for_each创建的另一个资源,则必须使用映射中的键或示例中的each.key

代码语言:javascript
运行
复制
resource "azurerm_key_vault_secret" "wvd_registration_info" {
  for_each     = var.wvd_hostpool
  name         = each.value.name
  value        = azurerm_virtual_desktop_host_pool.wvd_hostpool[each.key].registration_info.token
  key_vault_id = azurerm_key_vault.wvd_key_vault.id
  depends_on   = [azurerm_role_assignment.wvd_sp]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70696344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档