Terraform не работает удаленно-exec (aws / ec2) - PullRequest
4 голосов
/ 27 апреля 2019

При попытке выполнить сценарий оболочки бросить провайдера "remote-exec" в terraform, соединение не устанавливается

Я использую ami для ubuntu-xenial-16.04, поэтому пользователь ubuntu

Это последний код, который я использую для выполнения сценария оболочки:

resource "aws_instance" "secondary_zone" {
  count = 1
  instance_type = "${var.ec2_instance_type}"
  ami           = "${data.aws_ami.latest-ubuntu.id}"
  key_name = "${aws_key_pair.deployer.key_name}"
  subnet_id = "${aws_subnet.secondary.id}"
  vpc_security_group_ids =  ["${aws_security_group.server.id}"]
  associate_public_ip_address = true

  provisioner "remote-exec" {
    inline = ["${template_file.script.rendered}"]
  }

  connection {
    type        = "ssh"
    user        = "ubuntu"
    private_key = "${file("~/.ssh/id_rsa")}"
  }
}

Вот что попало в консоль:

aws_instance.secondary_zone (remote-exec): Connecting to remote host via SSH...
aws_instance.secondary_zone (remote-exec):   Host: x.x.x.x
aws_instance.secondary_zone (remote-exec):   User: ubuntu
aws_instance.secondary_zone (remote-exec):   Password: false
aws_instance.secondary_zone (remote-exec):   Private key: true
aws_instance.secondary_zone (remote-exec):   SSH Agent: false
aws_instance.secondary_zone (remote-exec):   Checking Host Key: false

Спасибо за вашу помощь ...

1 Ответ

0 голосов
/ 03 мая 2019

Как я уже говорил, это была проблема с подключением в моем случае.

Кроме того, template_file устарел, поэтому я изменяю код на:

resource "aws_instance" "secondary_zone" {
  instance_type = "${var.ec2_instance_type}"
  ami           = "${data.aws_ami.latest-ubuntu.id}"
  key_name = "${aws_key_pair.deployer.key_name}"
  subnet_id = "${aws_subnet.secondary.id}"
  vpc_security_group_ids =  ["${aws_security_group.server.id}"]
  associate_public_ip_address = true

    connection {
    type     = "ssh"
    user = "ubuntu"
    private_key = "${file("~/.ssh/id_rsa")}"
    timeout = "2m"

  }

  provisioner "file" {
    source      = "/server/script.sh"
    destination = "/tmp/script.sh"
  }  

  provisioner "remote-exec" {
    inline = [
      "chmod +x /tmp/script.sh",
      "/tmp/script.sh args",
    ]
  }
}

Также я узнал, что файл scrip.sh должен быть отформатирован как LR

...