Terraform 工作区 > 我们可以忽略错误吗?

Terraform workspace > Can we ignore error?

我最近使用 Terraform 任务完成了我的第一个 Azure devops 管道。 我阅读了有关 Terraform 工作区的教程,并尝试将其应用于发布管道。

  1. 第一阶段:我有一个创建工作区的 TF 任务 'dev',我确认它运行良好
  2. 在第二阶段:同样的任务,我创建了一个工作区'test'

然而,当我 运行 第二个版本 TF returns 时,一个错误指出工作区 'dev'(或 'test')已经存在,这是真实且正常的。所以在 Azure Devops 中我勾选框 'continue on error'.

您可能猜到了,我的所有版本都有效,但由于存在工作区,我收到了警告。当我 运行 命令

时,你有忍者技巧来忽略错误吗
terraform workspace new dev

可能存在隐藏输出错误的参数。

Terraform 目前没有 create if not exist 选项,但是有一个 GitHub issue opened for select or create if not exist

https://github.com/hashicorp/terraform/issues/16191

为什么在同一条路径上提到了一些解决方法

一个解决方法是

terraform workspace select $env_name || terraform workspace new $env_name

所以它将 select 存在的工作空间,否则它将创建

我通常不希望在常规 Terraform 管道中看到工作区的创建。

相反,工作区要么在最初设置配置时建立一次(在正在进行的例行更新中保持不变)要么工作区被用于临时开发工作,因此它们将通过 运行 直接使用 terraform workspace new 命令在开发人员的工作环境中手动创建。

当运行在自动化中使用 Terraform 时,管道通常会从 运行ning terraform init 开始,然后是 运行 其他命令,例如 terraform planterraform apply。如果您需要 select 一个 non-default 工作空间,您可以在 运行 任何命令之前设置环境变量 TF_WORKSPACE,然后 Terraform 将使用该工作空间进行所有操作。如上所述,您应该在设置管道之前建立一次工作空间,这样管道将只使用已经存在的工作空间或如果不存在则产生错误,提示您执行 one-off 设置步骤创建它。