如何从 terraform 中的输出值中删除大括号和引号
how to remove the braces and quotes from output value in terraform
我需要从 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
完成后,您可以使用带有 -json
或 -raw
选项的 terraform output
获得两种不同的原始输出。
-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)
我需要从 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
完成后,您可以使用带有 -json
或 -raw
选项的 terraform output
获得两种不同的原始输出。
-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)