在 terraform 中获取当前工作目录

pka*_*mol 5 terraform terragrunt

我正在使用 Terragrunt 运行 Terraform,所以我实际上不确定调用 terraform 的路径。

所以我试图按如下方式获取当前工作目录:

resource null_resource "pwd" {
  triggers {
    always_run = "${uuid()}"
  }
  provisioner "local-exec" {
    command = "echo $pwd >> somefile.txt"
  }
}
Run Code Online (Sandbox Code Playgroud)

但是生成的文件是空的。

有什么建议?

Mar*_*ins 34

Terraform 有一个内置对象path,其中包含 Terraform 知道的各种路径的属性:

  • path.module是包含path.module放置表达式的模块的目录。
  • path.root 是包含根模块的目录。
  • path.cwd 是当前工作目录。

在编写 Terraform 模块时,我们通常希望解析相对于模块本身的路径,以便它是自包含的,不会对配置中的任何其他模块做出任何假设或造成影响。因此path.module通常是正确的选择,使模块与实例化的位置无关。

使用当前工作目录非常不常见,因为这会使 Terraform 配置对其应用的位置敏感,并且如果您以后从不同目录或完全不同的机器上应用相同的配置,可能会导致不必要的资源更改。但是,在需要这样东西的罕见情况下,path.cwd会这样做。

path.modulepath.root都是来自 的相对路径path.cwd,因为这最大限度地减少了无意中将有关 Terraform 运行到配置的系统的详细信息引入的风险。但是,如果出于某种原因确实需要绝对模块路径,则可以使用abspath, 如abspath(path.module).


sad*_*k-f 7

尝试 command = "echo $(pwd) > somefile.txt"

  • 动词描述通常很有帮助 (6认同)