Как использовать Terraform Provider с несколькими экземплярами - PullRequest
0 голосов
/ 25 июня 2019

Я хочу создать x экземпляров и запустить того же поставщика.

resource "aws_instance" "workers" {
  ami = "ami-08d658f84a6d84a80"
  count = 3
  ...
provisioner "remote-exec" {
    scripts = ["setup-base.sh", "./setup-docker.sh"]
    connection {
      type = "ssh"
      host = "${element(aws_instance.workers.*.public_ip, count.index)}"
      user = "ubuntu"
      private_key = file("${var.provisionKeyPath}")
      agent = false
    }
  }

Я думаю, что строка host сбивает с толку Terraform. Получение Error: Cycle: aws_instance.workers[2], aws_instance.workers[1], aws_instance.workers[0]

1 Ответ

2 голосов
/ 15 июля 2019

Поскольку я обновляю свою версию terraform (0.12), я столкнулся с той же проблемой, что и ваша.

Вам необходимо использовать ${self.private_ip} для свойства host в вашем connection объекте, иconnection объект должен быть расположен вне provisioner "remote-exec"

Подробности приведены ниже.

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"]
  }
...
}

Если вам нужно получить больше информации, ссылка ниже поможет вам,https://github.com/hashicorp/terraform/issues/20286

...