如何从其他文件夹运行terraform init?

red*_*888 5 windows terraform terraform-template-file

我想编写用于CI / CD的Terraform脚本,我不喜欢脚本中的CD,而是有特定的路径。

我试过了 terraform init c:\my\folder\containing\tf-file

但是运行该命令会将.terraform文件夹放入我的cwd中。

mee*_*pol 7

不带选项指定目录

terraform apply [options] ./path-to-dir
Run Code Online (Sandbox Code Playgroud)

或者你可以使用-chdir选项

terraform -chdir="./path-to-dir" apply
Run Code Online (Sandbox Code Playgroud)

  • -chdir 的问题是它会更改所有参数的相对路径。对于 .tf 文件和 .tfvars 文件位于不同目录中的情况没有帮助 (2认同)

小智 5

我知道这是一个旧线程但是...您正在寻找的命令是:

terraform -chdir=environments/production apply
Run Code Online (Sandbox Code Playgroud)

请参阅此链接以获取有关全局选项 -chdir=" 的帮助

从实际的 Terraform 站点引用:

运行 Terraform 的常用方法是首先切换到包含根模块的 .tf 文件的目录(例如,使用 cd 命令),以便 Terraform 将自动查找这些文件,而无需任何额外参数。

但在某些情况下——尤其是在将 Terraform 包装在自动化脚本中时——从与根模块目录不同的目录运行 Terraform 会很方便。为了实现这一点,Terraform 支持一个全局选项 -chdir=... 您可以将其包含在您打算运行的子命令的名称之前:

terraform -chdir=environments/production apply chdir 选项指示 Terraform 在运行给定子命令之前将其工作目录更改为给定目录。这意味着 Terraform 通常在当前工作目录中读取或写入的任何文件都将改为在给定目录中读取或写入。


str*_*gjz 2

更新:Terraform cli 现在支持 -chdir=PATH/TO/TF_files

https://www.terraform.io/cli/commands#switching-working-directory-with-chdir

默认情况下,terraform init 假定工作目录已包含配置,并将尝试初始化该配置。

或者,可以使用 -from-module=MODULE-SOURCE 选项对空目录运行 init,在这种情况下,在运行任何其他初始化步骤之前,给定的模块将被复制到目标目录中。

https://www.terraform.io/docs/commands/init.html

  • 我认为你不明白我的问题?我有一个文件夹,里面有我的 tf 文件。我不想必须 CD 到该目录才能运行 init 和其他 terraform 命令,我想从任何地方运行 terraform 并且只需显式指定文件夹。根据文档,我可以指定一个文件夹作为参数,但是当我这样做时,它仍然在 cwd 中创建 .terraform 。使用 -from-module=mydir 它实际上将 tf 从 mydir 目录复制到我的 cwd (4认同)
  • 看起来这是他们应该添加的新功能。我当然希望能够这样做。 (4认同)
  • @red888:terraform 依赖于当前工作目录。没有办法解决这个问题。 (2认同)