gpt4 book ai didi

azure - 如何从 terraform 中的输出值中删除大括号和引号

转载 作者:行者123 更新时间:2023-12-03 02:18:17 24 4
gpt4 key购买 nike

我需要从 terraform 中的输出值中删除引号。结果的输出是数组格式,只需获取数组中的值并将其导出到 csv

Below is  my code

data "azurerm_resources" "spokes" {
type = "Microsoft.Network/virtualNetworks"
}

locals {
vnetnames = ([for vnets in lookup(data.azurerm_resources.spokes, "resources", []) : lookup(vnets, "name")])
}

output "localvar" {
value = local.vnetnames
}
   **Actual Output**
localvar = [
"net1",
"net2"
"net3"
"net4",
]

**Expected Output**
net1
net2
net3
net4


This is because I need the send the values alone to a separate file

最佳答案

terraform apply UI 和 terraform output 中不带任何选项的主要输出值渲染是供人类而不是机器使用的,因此它使用了预期的语法与Terraform语言语法类似,希望大家熟悉,从而更容易理解。

如果您想以机器可读的格式检索该数据,那么在 terraform apply 完成后,您可以将 terraform output-json-raw 选项来获取两种不同类型的原始输出。

-json 选项是最通用的,它将生成您可以在 Terraform 中编写的任何值的 JSON 表示形式,并具有与 the jsonencode function 类似的映射规则集。 .

-raw 函数专用于可自动转换为字符串的字符串和值(即 the tostring function 可接受的任何值)。

此处的输出值似乎具有列表或元组类型,因此与 -raw 不直接兼容。这意味着您必须选择如何继续:

  • 使用terraform output -json localvar,然后使用其他一些软件来解析 JSON 并生成您在此处显示的换行符分隔的原始表单。例如,您可以使用 jq 来实现第二个转换步骤。 .

  • 更改输出值以生成具有所需格式的字符串,然后使用 terraform output -raw localvar 直接获取该字符串的值。看起来您只想用换行符分隔直接字符串,在这种情况下,以下表达式可以实现这一点:

      value = join("\n", local.vnetnames)

关于azure - 如何从 terraform 中的输出值中删除大括号和引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70185347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com