Terraform迭代创建azurerm_key_vault_secret时如何用keyname替换数字索引
答案
你只需调整azurerm_key_vault_secret资源中for_each的遍历逻辑,将映射键从数组下标替换为元素的keyname字段即可,修改后的核心代码如下:
resource "azurerm_key_vault_secret" "injections" { # 仅修改此行,将原来的下标idx替换为v.keyname作为映射键 for_each = { for v in local.helper_list: v.keyname => v } name = each.value.name value = each.value.value key_vault_id = azurerm_key_vault.example.id }
原理说明
原来的写法{ for idx, v in local.helper_list: idx => v }是用数组的数字下标作为映射的键,因此Terraform生成的资源索引就是"0"、"1"这类数字。修改后直接取每个元素的keyname作为映射键,Terraform自然就会用该值作为资源实例的索引。
注意:请确保
local.helper_list中所有元素的keyname值唯一,否则Terraform会抛出映射键冲突的错误,当前你的示例场景符合唯一性要求,可直接使用。
修改后执行terraform plan,输出的资源索引就会变为你期望的格式。
内容的提问来源于stack exchange,提问作者Maki
相关产品推荐
相关产品推荐

