我想建立一个terraform的地图列表.有没有让我这样做的操作.
例如:我想构建结构(来自aws_instance.test.*.private_ip)
addresses = [
{
address = private_ip-1
},
{
address = private_ip-2
}
...
]
Run Code Online (Sandbox Code Playgroud)
小智 5
抱歉,如果这个问题已经解决,我认为这是一个较旧的问题。
我不确定这是否是最佳做法,但这是我尝试达到所需状态的方式。
使用null_resource,您将能够执行以下操作:
variable "addresses" {
type = "list"
default = [
"private_ip-1",
"private_ip-2",
"private_ip-3"
]
}
resource "null_resource" "test" {
count = "${length(var.addresses)}"
triggers {
address = "${element(var.addresses, count.index)}"
}
}
output "addresses" {
value = "${null_resource.test.*.triggers}"
}
Run Code Online (Sandbox Code Playgroud)
并具有以下输出:
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Outputs:
addresses = [
{
address = private_ip-1
},
{
address = private_ip-2
},
{
address = private_ip-3
}
]
Run Code Online (Sandbox Code Playgroud)
我目前在terraform 0.11.5上,在0.6.7中似乎添加了null_resource
但是null_resource触发器有一些限制。插值变量只能产生字符串。因此,很遗憾,您将无法插值会产生列表或地图的值;例如:
resource "null_resource" "test" {
triggers {
mylist = "${var.addresses}"
}
}
Run Code Online (Sandbox Code Playgroud)
会导致错误
错误:null_resource.test:触发器(地址):“预期类型为“字符串”,具有不可转换的类型为“ [] interface {}”
使用 terraform 10.8,您可以
output "private_subnets" {
value = [
"${aws_subnet.private.*.id}"
]
}
Run Code Online (Sandbox Code Playgroud)
https://github.com/hashicorp/terraform/issues/7430
| 归档时间: |
|
| 查看次数: |
3724 次 |
| 最近记录: |