如何将Terraform provisioner用于多个实例

如何将Terraform provisioner用于多个实例,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我想创建x个实例并运行相同的provisioner resource "aws_instance" "workers" { ami = "ami-08d658f84a6d84a80" count = 3 ... 我认为主机线混淆了地形。获取错误:周期:aws\u instance.workers[2],aws\u instance.workers[1],aws\u instance.workers[0]自从升级terraform版本(0.12)以来,我遇到了与您相同的问题 您需要对

我想创建x个实例并运行相同的provisioner

resource "aws_instance" "workers" {
  ami = "ami-08d658f84a6d84a80"
  count = 3
  ...

我认为主机线混淆了地形。获取
错误:周期:aws\u instance.workers[2],aws\u instance.workers[1],aws\u instance.workers[0]

自从升级terraform版本(0.12)以来,我遇到了与您相同的问题

您需要对
连接
对象中的
主机
属性使用
${self.private_ip}
, 而
连接
对象应位于
供应器“远程执行”

详情如下

resource "aws_instance" "workers" {
  ami = "ami-08d658f84a6d84a80"
  count = 3
  ...
  connection {
    host = "${self.private_ip}"
    type = "ssh"
    user = "YOUR_USER_NAME"
    private_key = "${file("~/YOUR_PEM_FILE.pem")}"
  }

  provisioner "remote-exec" {
    scripts = ["setup-base.sh", "./setup-docker.sh"]
  }
...
}
如果您需要获得更多信息,下面的链接将帮助您。

该供应器是
aws\u实例.workers
资源的一部分吗?现在很难从你在问题中包含的内容来判断,因此编辑以澄清这一点非常有用。如果你能让我知道你遗漏了什么,很高兴提供更多信息。你能包含完整的地形配置吗?总的来说,最好提供一份报告,以便人们能够重现您的问题。
resource "aws_instance" "workers" {
  ami = "ami-08d658f84a6d84a80"
  count = 3
  ...
  connection {
    host = "${self.private_ip}"
    type = "ssh"
    user = "YOUR_USER_NAME"
    private_key = "${file("~/YOUR_PEM_FILE.pem")}"
  }

  provisioner "remote-exec" {
    scripts = ["setup-base.sh", "./setup-docker.sh"]
  }
...
}