将脚本参数与 remote-exec - terraform 一起使用

Using the script argument with remote-exec - terraform

我正在尝试将脚本参数与 remote-exec terraform Provisioner 一起使用。根据文档,脚本参数执行以下操作:

script - 这是将被复制到的本地脚本的路径(相对或绝对) 远程资源,然后执行。这不能通过内联或脚本提供。

这是文档的 link: https://www.terraform.io/docs/language/resources/provisioners/remote-exec.html

代码如下:

    script = [
    "./scripts/provision.sh"
    ]

这是错误:

Error: Incorrect attribute value type

on main.tf line 86, in resource "vsphere_virtual_machine" "vm":
86:    script = [
87:      "./scripts/provision.sh",
88:    ]

Inappropriate value for attribute "script": string required.

如有任何帮助,我们将不胜感激。

如果您查看文档,它会说:

您不能将任何参数传递给使用此配置程序的脚本或脚本参数的脚本。如果要指定参数,请使用文件提供器上传脚本,然后使用内联调用它。示例:

resource "aws_instance" "web" {
  # ...

  provisioner "file" {
    source      = "script.sh"
    destination = "/tmp/script.sh"
  }

  provisioner "remote-exec" {
    inline = [
      "chmod +x /tmp/script.sh",
      "/tmp/script.sh args",
    ]
  }
}

此外,我建议使用内联而不是 script/scripts(我个人的偏好)。如果您需要使用不带大括号的脚本。

如果您需要有关远程执行的更多帮助,请告诉我。

我是 TF 的新手 - 脚本不采用列表,列表是使用 [ ] 方括号定义的。解决方案是使用

script = "./scripts/provision.sh"