Terraform Lifecycle 忽略元数据中的 SSH-Key

Jef*_*ing 3 google-cloud-platform terraform

当您使用 gcloud ssh 到实例时,它会将该 ssh 公钥添加到实例的元数据中以允许您进入。太棒了。

不过,现在 terraform 希望删除该元数据,因为它不在 .tf 文件中。我不在乎它不在 .tf 文件中,我希望 terraform 忽略 SSH 密钥,并且由于安全问题,我无法控制我无法使用项目范围的 SSH 密钥。

我知道如何设置忽略所有元数据的生命周期策略,但我们仍然希望在 hostinit 脚本发生更改时收到通知,因此我试图找到一种仅忽略 ssh 密钥元数据的方法。

正如你可以想象的那样,要获得良好的谷歌结果相当困难,但我已经尝试过。有很多类似的问题,但它们是通过启用项目范围的 SSH 密钥来解决的,但我无法做到这一点。

the*_*dog 6

您可以忽略所有元数据

resource "google_compute_instance" "default" {
 
  ...

  lifecycle {
    ignore_changes = [
      metadata
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

或者只是特定的,例如metadata["sshKeys"](中的地图元素的语法ignore_changes

  lifecycle {
    ignore_changes = [
      metadata["sshKeys"]
    ]
  }
Run Code Online (Sandbox Code Playgroud)

  • 对于 Terraform v0.12.29,这对我有用:`ignore_changes = [metadata["sshKeys"]]` (2认同)