Как заставить провайдера remote-exec применить после вложений диска? - PullRequest
0 голосов
/ 18 апреля 2019

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

resource "aws_instance" "controller" {
  ...

  provisioner "remote-exec" {
    connection {
      type     = "ssh"
      user     = "centos"
    }
    inline = [
      "download and run script to verify environment"
    ]
  }
}

resource "aws_ebs_volume" "controller-ebs-sdb" {
  ...
}

resource "aws_volume_attachment" "controller-volume-attachment-sdb" {
  device_name = "/dev/sdb"
  volume_id   = "${aws_ebs_volume.controller-ebs-sdb.id}"
  instance_id = "${aws_instance.controller.id}"
}

В настоящее время сценарий не выполняется в среде, поскольку при запуске тома не былоприлагается.

Можно ли запускать скрипт remote-exec только после присоединения томов?

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Вы можете запустить провайдер на любом ресурсе (рассмотрите шаблон null_resource для крайней версии этого), поэтому лучше всего запустить его на ресурсе aws_volume_attachment:

# ...

resource "aws_volume_attachment" "controller-volume-attachment-sdb" {
  device_name = "/dev/sdb"
  volume_id   = "${aws_ebs_volume.controller-ebs-sdb.id}"
  instance_id = "${aws_instance.controller.id}"

  provisioner "remote-exec" {
    connection {
      host     = "${aws_instance.controller.public_ip}"
      type     = "ssh"
      user     = "centos"
    }
    inline = [
      "download and run script to verify environment"
    ]
  }
}
1 голос
/ 18 апреля 2019

Вы можете рассмотреть возможность добавления опции триггера в remote-exec. Другой грубый вариант - добавить спящий режим на несколько секунд, либо сценарий может повторить сам или проверить состояние / существование диска, а затем попытаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...