读取线束提供程序块中的元素

问题描述 投票:0回答:1

我有以下json

 {
   "applications": [
     {"abc": {"app": "myapp", "org": "myorg_a"}},
     {"bcd": {"app": "myapp2", "org": "myorg_b"}}
   ]
 }

我需要在harness提供程序块中使用org =“myorg_a”https://registry.terraform.io/providers/harness/harness/latest/docs

#Configure the Harness provider for Next Gen resources
 provider "harness" {
    endpoint         = "https://app.harness.io/gateway"
    account_id       = myorg_a
    platform_api_key = "mike"
 }

我需要动态读取myorg_a,因为明天json可能会更改为myorg_c。我需要帮助才能实现它。

使用 (data.http.myapi.body).applications.abc.org 我可以读取 myorg_a 但无法硬编码 abc。

当我尝试 (data.http.myapi.body).applications[0]["org"] 时,出现错误“给定的键无法识别此集合值中的元素。对象仅支持按名称查找属性,不是按数字索引。”

terraform logic infrastructure-as-code harness
1个回答
0
投票

我使用局部变量创建了这个提案,并使用嵌套迭代展平了该对象。

locals {
  data =  {
   "applications": [
     {"abc": {"app": "myapp", "org": "myorg_a"}},
     {"bcd": {"app": "myapp2", "org": "myorg_b"}}
   ]
 }
 data_org = flatten([ for k,v in local.data["applications"] : [
         for x,z in v :[
          {org = z.org}
         ]
  
 ]])

}

用于测试的输出

output "get_values" {
  value = local.data_org
}

我希望这个解决方案可以帮助您实现您的目标。让我知道我愿意与您合作。

[![在此处输入图像描述][1]][1]

© www.soinside.com 2019 - 2024. All rights reserved.