通过json文件的Terraform循环
我正在尝试使用terraform在azurerm中创建一个存储帐户,并将其与密钥名配对以加密此存储。但是为了提高商品和未来的性能,我想从json文件中设置这个存储帐户的名称。我们的想法是在json中设置一个数组,其中包含通过json文件的Terraform循环,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,我正在尝试使用terraform在azurerm中创建一个存储帐户,并将其与密钥名配对以加密此存储。但是为了提高商品和未来的性能,我想从json文件中设置这个存储帐户的名称。我们的想法是在json中设置一个数组,其中包含storages name和key\u name,并在myazurerm\u resources中循环这些值并进行设置 我面临的问题是无法访问json文件。我将其配置如下 tenant.json { "inputs": [ {
storages name
和key\u name
,并在myazurerm\u resources
中循环这些值并进行设置
我面临的问题是无法访问json文件。我将其配置如下
tenant.json
{
"inputs": [
{
"tenant-pair": {"tenant-name": "storage-name", "tenant-key": "key-name"}
}
]
}
在my main.tf中,在一些文档之后,我设置了一个locals
,如下所示:
locals {
tenant_data = jsondecode("./tenants.json")
}
但如果我试图将这些数据展平:
locals {
tenant_data = jsondecode("./tenants.json")
helper_list = flatten([for v in local.tenant_data.inputs :
[for tenant_name, tenant_key in v.tenant-pair :
{
"tenant_name" = tenant_name
"tenant_key" = tenant_key
}
]
])
}
我在这段代码中遇到的错误是,输入
是一个未解析的引用
我想知道如何访问json文件并在其中循环
非常感谢各位的帮助和指导。当您将JSON数据值作为一个文件提供时,请使用
文件
函数,如下所示
locals {
tenant_data = jsondecode(file("tenant.json"))
}
output "json" {
value = element(flatten([for v in local.tenant_data.inputs : v.tenant-pair]), 0)
}
输出:
Outputs:
json = {
"tenant-key" = "key-name"
"tenant-name" = "storage-name"
}
您是否尝试过使用
jsondecode(文件(“tenants.json”)
?感谢您的帮助。但不幸的是,即使我运行你的代码。我得到了相同的错误“没有参数或块类型被命名”输入“您能提供您正在尝试的完整代码吗?我确实使用了您相同的代码进行测试。完全相同的代码伙伴。当我运行terraform时,我得到了一个错误:error:externous JSON object property
,因为它似乎无法识别我的JSON文件orry mate中的输入
,出于某种奇怪的原因,它现在正在工作。它会打印结果。只是澄清一下。如果json数组中有更多元素,如何打印所有元素?比如,如果我有3个租户对
,想循环并打印所有租户对?