在 terraform 中获取当前工作目录
Get current working directory in terraform
我是 运行 使用 Terragrunt 的 Terraform,所以我实际上不确定调用 Terraform 的路径。
所以我试图获取当前工作目录如下:
resource null_resource "pwd" {
triggers {
always_run = "${uuid()}"
}
provisioner "local-exec" {
command = "echo $pwd >> somefile.txt"
}
}
但是生成的文件是空的。
有什么建议吗?
试试看
command = "echo $(pwd) > somefile.txt"
Terraform 有一个 built-in object path
,其中包含 Terraform 知道的各种路径的属性:
path.module
是包含放置 path.module
表达式的模块的目录。
path.root
是包含根模块的目录。
path.cwd
是当前工作目录。
在编写 Terraform 模块时,我们最常希望解析相对于 模块本身 的路径,以便它是独立的,不对任何问题做出任何假设或导致对配置中任何其他模块的影响。因此 path.module
通常是正确的选择,使模块不知道它从哪里被实例化。
很少使用当前工作目录,因为这会使 Terraform 配置对其应用位置敏感,并且如果您稍后从不同目录或在不同机器上应用相同配置,可能会导致不必要的资源更改共。然而,在极少数情况下需要这样的事情,path.cwd
会做。
path.module
和 path.root
都是来自 path.cwd
的相对路径,因为这最大限度地降低了无意中将有关 Terraform 运行 的系统细节引入到配置。但是,如果你 do 出于某种原因需要绝对模块路径,你可以使用 abspath
,例如 abspath(path.module)
.
我是 运行 使用 Terragrunt 的 Terraform,所以我实际上不确定调用 Terraform 的路径。
所以我试图获取当前工作目录如下:
resource null_resource "pwd" {
triggers {
always_run = "${uuid()}"
}
provisioner "local-exec" {
command = "echo $pwd >> somefile.txt"
}
}
但是生成的文件是空的。
有什么建议吗?
试试看
command = "echo $(pwd) > somefile.txt"
Terraform 有一个 built-in object path
,其中包含 Terraform 知道的各种路径的属性:
path.module
是包含放置path.module
表达式的模块的目录。path.root
是包含根模块的目录。path.cwd
是当前工作目录。
在编写 Terraform 模块时,我们最常希望解析相对于 模块本身 的路径,以便它是独立的,不对任何问题做出任何假设或导致对配置中任何其他模块的影响。因此 path.module
通常是正确的选择,使模块不知道它从哪里被实例化。
很少使用当前工作目录,因为这会使 Terraform 配置对其应用位置敏感,并且如果您稍后从不同目录或在不同机器上应用相同配置,可能会导致不必要的资源更改共。然而,在极少数情况下需要这样的事情,path.cwd
会做。
path.module
和 path.root
都是来自 path.cwd
的相对路径,因为这最大限度地降低了无意中将有关 Terraform 运行 的系统细节引入到配置。但是,如果你 do 出于某种原因需要绝对模块路径,你可以使用 abspath
,例如 abspath(path.module)
.