Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取terraform中的当前工作目录_Terraform_Terragrunt - Fatal编程技术网

获取terraform中的当前工作目录

获取terraform中的当前工作目录,terraform,terragrunt,Terraform,Terragrunt,我正在使用Terragrunt运行Terraform,所以我实际上不确定从哪个路径调用Terraform 因此,我尝试获取当前工作目录,如下所示: resource null_resource "pwd" { triggers { always_run = "${uuid()}" } provisioner "local-exec" { command = "echo $pwd >> somefile.txt" } } 但是,生成的文件是空的 有什么

我正在使用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有一个内置对象
路径
,其中包含Terraform知道的各种路径的属性:

  • path.module
    是包含放置
    path.module
    表达式的模块的目录
  • path.root
    是包含根模块的目录
  • path.cwd
    是当前工作目录
在编写Terraform模块时,我们通常希望解析相对于模块本身的路径,以便它是自包含的,不会对配置中的任何其他模块做出任何假设或造成影响。因此,
path.module
通常是正确的选择,使模块不知道从何处实例化

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


path.module
path.root
都是来自
path.cwd
的相对路径,因为这样可以最大限度地降低无意中引入Terraform运行到配置中的系统细节的风险。但是,如果出于某种原因确实需要绝对模块路径,您可以使用,例如
abspath(path.module)

使用
path.cwd
path.root
(请参见)?文档移动到动词描述通常是有帮助的