有啥方法可以让 Terraform CLI 在 PWD 以外的目录中运行脚本?

Posted

技术标签:

【中文标题】有啥方法可以让 Terraform CLI 在 PWD 以外的目录中运行脚本?【英文标题】:Is there any way to have Terraform CLI runs scripts in a directory other than PWD?有什么方法可以让 Terraform CLI 在 PWD 以外的目录中运行脚本? 【发布时间】:2021-03-07 16:04:44 【问题描述】:

我了解当我在目录中运行 terraform CLI 时,它会从当前目录中获取所有 terraform 工件。

是否可以让 terraform apply 和 terraform plan 在当前 PWD 以外的目录中查找脚本,这样我就不必不断更改当前目录?

【问题讨论】:

这与:cd $NEW_DIR; terraform apply 有何不同? @GrzegorzOledzki,我正在构建 shell 脚本,它可以做更多的事情,而不仅仅是 terraform,它需要从许多实际路径中获取数据 @GrzegorzOledzki,无论其他选项如何,我都想知道该功能是否存在。 你可以直接传入你要申请的目录。 terraform.io/docs/commands/apply.html @Adrian,我在您分享的链接中找不到。你能给我你所指的选项吗? 【参考方案1】:

在我撰写本文时,Terraform v0.14.0 目前处于候选发布状态,预计在未来几周内发布最终版本。

该新版本将引入一项新功能,允许在运行其任何子命令之前请求 Terraform 切换目录本身。例如:

terraform -chdir=subdirectory init
terraform -chdir=subdirectory apply

这与在当前工作目录已设置为给定子目录的情况下启动 Terraform 基本相同,但有两个细微差别:

Terraform 会将path.cwd 值设置为运行 Terraform 的目录,而不是子目录。和以前一样,path.root 是包含根模块的目录,因此两个目录都可用。 如果您的CLI configuration 包含 Terraform 在启动期间解析的路径,那么它们将相对于原始工作目录进行解析,因为目录切换仅适用于给定子命令的行为,而不适用于 Terraform 在运行之前采取的操作子命令。

这些差异对于常见的 Terraform 使用通常都不显着,因此在大多数情况下,您可以认为-chdir= 选项与首先使用cd 直接切换到目标具有相同的效果。

【讨论】:

以上是关于有啥方法可以让 Terraform CLI 在 PWD 以外的目录中运行脚本?的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以使用 azure cli 方法在存储帐户中创建 AzureBlob 容器和目录?

Terraform:在同一类型上同时使用数据源和资源有啥意义?

Terraform - 找不到匹配的 Route53Zone

Terraform AZ CLI 本地执行命令限制

将现有资源导入 Terraform 状态文件时出错

如何使用 API、CLI 或 Terraform 为 RabbitMQ 代理获取 AmazonMQ 节点