我是 Terraform 的新手,这个问题可能早就解决了。不幸的是,我找不到。
问题:使用来自另一个资源(null_resource)的计数来访问资源(aws_instance)的属性(public_ip)的正确语法是什么。
terraform {
required_version = ">= 0.12, < 0.13"
}
provider "aws" {
region = "us-east-1"
# Allow any 2.x version of the AWS provider
version = "~> 2.0"
}
variable instances {
default = 2
}
variable username {
}
variable password {
}
resource "null_resource" "test-null" {
count = var.instances
provisioner "file" {
content = "foo"
destination = "~/bar"
connection {
type = "ssh"
host = aws_instance.test-instance.*.public_ip
user = var.username
password = var.password
}
}
}
resource "aws_instance" "test-instance" {
count = var.instances
ami = "ami-c50e37be"
instance_type = "t2.micro"
}
应用此功能会出现以下错误:
Error: Incorrect attribute value type: Inappropriate value for attribute "host": string required.
根据我的理解,这是因为“aws_instance.test-instance.*.public_ip”给出了public_ip列表,而不是特定元素。
我尝试了很多变化,但都没有效果。
请在这种情况下建议正确的语法。
答案1
找到答案了,应该是:
主机 = aws_instance.test-instance.*.public_ip[count.index]
如果有更好的选择,请告诉我。
另外,我不确定我是否在正确的论坛上发布了它。如果没有,请提出替代方案。
谢谢你!