【问题标题】:How to get remote-exec provisioner to apply after disk attachments?如何在磁盘附件后应用 remote-exec 配置程序?
【发布时间】:2019-09-08 11:37:21
【问题描述】:

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

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 脚本?

【问题讨论】:

    标签: terraform


    【解决方案1】:

    您可以在任何资源上运行配置程序(考虑null_resource pattern 以获得此极端版本)所以最好的办法是在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"
        ]
      }
    }
    

    【讨论】:

      【解决方案2】:

      您可以考虑在 remote-exec 中添加触发器选项。其他粗略的选择是添加几秒钟的睡眠,或者脚本可以自行重试,或者检查磁盘的状态/存在,然后尝试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-10
        • 1970-01-01
        相关资源
        最近更新 更多