Terraform 远程执行因权限被拒绝而失败

Ric*_*den 0 amazon-ec2 amazon-web-services terraform

我尝试使用 Remote-exec 配置程序来检查新 AWS ec2 实例上的用户数据是否已完成,但我不断收到权限被拒绝的错误。

错误是。

bash: /tmp/terraform_409380328.sh: Permission denied
Run Code Online (Sandbox Code Playgroud)

我们使用 Terraform 版本 10.8

有人可以帮忙吗?

provisioner "remote-exec" {
    inline = [
        "set -x",
        "chmod +x /tmp/*sh",
        "/bin/bash -c \"timeout 300 sed '/finished-user-data/q' <(tail /var/lib/cloud/data/result.json)\"",
    ]
    connection {
      type = "ssh"
      user = "${var.user}"
      private_key = "${file("${var.private_key}")}"
      agent = false
    }
  }
Run Code Online (Sandbox Code Playgroud)

Ric*_*den 6

我发现问题是我们的基础映像 (ami) 已硬化,并且阻止脚本从 /tmp 运行,这正是 terraform 正在尝试做的事情。

通过使用 script_path 选项,我能够指示 terraform 在不同的目录中创建并运行脚本。

然后,我可以使用 cloud-init status --wait 命令等待用户数据完成。

provisioner "remote-exec" {
  inline = [
    "sudo cloud-init status --wait",
  ]
connection {
    type = "ssh"
    user = "${var.user}"
    private_key = "${file("${var.private_key}")}"
    agent = false
    script_path = "/home/${var.user}/user-data-check.sh"
  }
}
Run Code Online (Sandbox Code Playgroud)