Terraform GCP 启动脚本本地文件而不是内联文件

Terraform GCP startup script local file instead of inline

网上有很多示例展示了如何使用 Terraform 运行 部署在 GCP/GCE 上的 VM 上的启动脚本,但它们都使用内联启动脚本,包括所有启动脚本代码在 terraform compute.tf 文件中。这可以通过启动脚本的单行或多行的 <

我知道我可以编写一个包装脚本,将 compute.tf 和一个单独的启动文件组合成一个 compute.tf 然后 运行s terraform,但我正在寻找一个假设存在一条更直接的路线。

谢谢。

要在您的 GCE VM 声明中引用一个文件,只需使用 file function 从您选择的文件中读取内容。例如:

resource "google_compute_instance" "default" {
  …
  metadata_startup_script = "${file("/path/to/your/file")}"
}

类似地,您还可以使用template_file 数据源对模板文件执行令牌替换,然后在您的GCE VM 声明中引用已解析的文件内容。例如:

data “template_file” “default” {
  template = “${file(“/path/to/your/file”)}”
  vars = {
    address = “some value“
  }
}

resource "google_compute_instance" "default" {
  …
  metadata_startup_script = "${data.template_file.default.rendered}"
}

参考文献:

重新运行自定义启动脚本,方法是登录实例并运行ning。

sudo google_metadata_script_runner --script-type startup

并且要启用完全调试,请执行此操作

sudo DEBUG=1 google_metadata_script_runner