Terraform从for_循环内部定义键值?
示例代码Terraform从for_循环内部定义键值?,terraform,Terraform,示例代码 resource "null_resource" "send_instance_ips" { depends_on = [aws_instance.funskies] for_each = { for idx, instance in [aws_instance.funskies]: idx => instance idx.key = instance.public_ip idx
resource "null_resource" "send_instance_ips" {
depends_on = [aws_instance.funskies]
for_each = {
for idx, instance in [aws_instance.funskies]: idx => instance
idx.key = instance.public_ip
idx.value = instance.private_ip
}
connection {
type = "ssh"
user = "fun-user"
private_key = file("~/id_rsa")
host = each.value.public_ip
}
provisioner "remote-exec" {
inline = [
"echo 'Hello ${each.value}' > /home/centos/all_ip.txt"
]
}
我得到的错误
Error: Invalid 'for' expression
on modules.tf line 9, in resource "null_resource" "send_instance_ips":
5: for_each = {
6:
7: for idx, instance in [aws_instance.funskies]: idx => instance
8:
9: idx.key = instance.public_ip
问题:如果要使用
key
和value
,如何修改我的每个键值对以包含我的实例的特定元素您的null\u资源
应采用以下格式:
resource "null_resource" "send_instance_ips" {
for_each = { for idx, instance in [aws_instance.funskies]:
idx=> {key = instance.public_ip
value = instance.private_ip}
}
connection {
type = "ssh"
user = "fun-user"
private_key = file("~/id_rsa")
host = each.value.key
}
provisioner "remote-exec" {
inline = [
"echo 'Hello ${each.value.value}' > /home/centos/all_ip.txt"
]
}
}
但是,由于您只有一个aws\u实例
,因此在本例中,对于每个实例,您实际上不需要
顺便说一下,如果您想消除idx
并执行以下操作:
{ for idx, instance in [aws_instance.funskies]:
instance.public_ip => instance.private_ip
}
它将不起作用,因为public_ip在之前是未知的。如果删除for表达式的无关无效语法部分,它看起来将“按原样”起作用:idx.key=instance.public_ip idx.value=instance.private_ip
。