我当前的output.tf
类似于:
output "hosts" {
main = {
address = "${aws_instance.main.*.public_ip}"
private_address = "${aws_instance.main.*.private_ip}"
ssh_user = "ubuntu"
}
}
terraform output -json
的结果是:
{
"hosts": {
"value": {
"main": [
{
"address": ["0.0.0.0", "0.0.0.1"],
"private_address": ["0.0.0.2", "0.0.0.3"],
"ssh_user": "ubuntu"
}
]
}
}
}
如何进行输出,以便每个主机都有单独的映射,例如:
{
"hosts": {
"value": {
"main": [
{
"address": "0.0.0.0"
"private_address": "0.0.0.2"
"ssh_user": "ubuntu"
},
{
"address": "0.0.0.1"
"private_address": "0.0.0.3"
"ssh_user": "ubuntu"
}
]
}
}
}
这将很容易解析。同样在此示例中,如果某些主机没有public_ip
或private_ip
,则在解析期间将公共地址映射到私有地址将变得不可能,因为输出数组不同步。
输出不必与示例中的完全相同,但在概念上类似:每个主机的一组数据,其中包含来自所讨论主机的aws_instance
的多个字段。我也可以在应用期间构建输出(我假设使用resource "local_file"
)而不是terraform output -json
,它甚至不必为JSON,这只是我可以自信地解析的内容。>