Terraform 为环境部署不同的资源

Terraform deploy different resource for enviroment

我是 Terraform 的新手,所以我确定这是一个简单的问题。

我正在尝试使用 terraform 部署到 GCP。

我在同一个 GCP 项目上有 2 个不同的环境:

我对每个环境都有警报,所以这就是我打算创建的:

如果我部署到一个环境中,那么 Terraform 必须 create/update 这个环境的资源,但不更新其余环境的资源。

我正在尝试使用模块和条件,它与此类似:

module "enviroment_live" {
  source = "./live"
  module_create = (var.environment=="live")
}

resource "google_monitoring_alert_policy" "alert_policy_live" {
  count = var.module_create  ? 1 : 0
  display_name = "Alert CPU LPProxy Live"

问题:

当我在实时环境 Terraform 上部署时,删除非实时环境的警报,反之亦然。

是否可以更新一个环境的资源而不删除另一个环境的资源?

此致

正如 Marko E 建议的解决方案是使用工作空间:

Terraform workspaces

步骤必须是:

  1. 为每个环境创建一个工作区。

  2. 部署时 (CI/CD) select 工作区之前 plan/apply:

    terraform 工作空间select $ENVIROMENT

  3. 使用条件(正如我之前解释的那样)create/configure 资源。