如何让远程执行配置程序在磁盘附件后应用?

Chr*_*now 4 terraform

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

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}"
}
Run Code Online (Sandbox Code Playgroud)

目前,该脚本使环境失败,因为它运行时尚未附加卷。

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

yda*_*coR 5

您可以在任何资源上运行配置程序(考虑其极端版本的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"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)