Terraform 如何在磁盘附件后应用远程exec provisioner?

Terraform 如何在磁盘附件后应用远程exec provisioner?,terraform,Terraform,我有一个脚本,需要在配置实例并连接卷后运行该脚本: resource "aws_instance" "controller" { ... provisioner "remote-exec" { connection { type = "ssh" user = "centos" } inline = [ "download and run script to verify environment" ]

我有一个脚本,需要在配置实例并连接卷后运行该脚本:

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}"
}
当前,脚本在环境中失败,因为它运行时卷尚未连接


是否可以在卷被附加后运行远程Excel脚本?

可以考虑在远程Excel中添加触发器选项。另一个粗略的选择是添加睡眠几秒钟,或者脚本可以自己重试,或者检查磁盘的状态/存在性,然后重试

您可以在任何资源上运行provisioner(请考虑此的极端版本),因此最好在
aws\u volume\u附件上运行它
资源:

# ...

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