使用来自另一个资源(null_resource)的计数来访问资源(aws_instance)的属性(public_ip)的正确语法是什么

使用来自另一个资源(null_resource)的计数来访问资源(aws_instance)的属性(public_ip)的正确语法是什么

我是 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]

如果有更好的选择,请告诉我。

另外,我不确定我是否在正确的论坛上发布了它。如果没有,请提出替代方案。

谢谢你!

相关内容