我在json文件site24x7IPs.json中有如下数据,并在terraform中对其进行了新的过滤:
{
"LocationDetails": [
{
"IPv6_Address_External": "2803:eb80:4000:d::0/64",
"City": "Buenos Aires",
"Place": "Argentina",
"external_ip": "170.78.75.88"
},
{
"IPv6_Address_External": "",
"City": "Buenos Aires",
"Place": "Argentina",
"external_ip": "170.78.75.87"
},
{
"IPv6_Address_External": "",
"City": "Melbourne",
"Place": "Australia",
"external_ip": "103.91.166.0/24"
}
]
}
和terraform代码:
locals {
site24x7IPs = jsondecode(file("${path.module}/site24x7IPs.json"))
}
output "site24x7IPs" {
#value = local.site24x7IPs.LocationDetails[*].external_ip # This works
# I'd like to filter the IP from Australia,
value = local.site24x7IPs.LocationDetails[?(@.Place == "Australia")].external_ip
}
预期结果:
"103.91.166.0/24"
输出:
value = local.site24x7IPs.LocationDetails[?(@.Place == "Australia")].external_ip
This character is not used within the language.
.LocationDetails [?(@。Place ==“ Australia”)]。external_ip是JSON查询语法,但在Terraform中不起作用。
有没有类似的方法可以在Terraform中实现过滤目标?
谢谢,
这应该给您结果:
output "australia_ip_with_quotes" {
value = format("%q",element([for i in local.site24x7IPs.LocationDetails: i.external_ip if i.Place == "Australia"],0))
}
output "australia_ip_without_quotes" {
value = element([for i in local.site24x7IPs.LocationDetails: i.external_ip if i.Place == "Australia"],0)
}
output "list" {
value = [for i in local.site24x7IPs.LocationDetails: i.external_ip if i.Place == "Australia"]
}
输出:
australia_ip_with_quotes = "103.91.166.0/24"
australia_ip_without_quotes = 103.91.166.0/24
list = [
"103.91.166.0/24",
]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句