Terraform:如何基于for_each生成应用名与Key Vault ID的映射
如何基于Terraform foreach创建的Azure Key Vault生成应用名到ID的映射
问题概述
通过toset(var.app_names)使用foreach批量创建Azure Key Vault资源后,需要生成一个以应用名为键、对应Key Vault ID为值的映射,但编写output块时无法获取每个Key Vault对应的应用名。
解决方案
当使用foreach(迭代对象为集合/列表)创建Terraform资源时,生成的资源对象本质是一个映射(Map):其中键就是foreach迭代的每个元素(即你的app_name),值是对应的Key Vault资源实例。直接遍历这个映射的键值对即可生成目标输出结构。
正确的Output代码
output "application_app_name_by_key_vault_id_map" { value = { for app_name, akv in azurerm_key_vault.application_key_vault : app_name => akv.id } }
代码说明
azurerm_key_vault.application_key_vault是一个映射,键为var.app_names中的每个应用名(如"app1"、"app2"),值为对应Key Vault的资源实例。for app_name, akv in ...遍历该映射,将每个键(应用名)作为新映射的键,对应资源的id作为值,最终生成符合期望的结构。
执行terraform output后,将得到如下结果:
{ "app1" = "id1" "app2" = "id2" "app3" = "id3" }
内容的提问来源于stack exchange,提问作者Yash Khare
相关产品推荐
相关产品推荐

