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 建议的解决方案是使用工作空间:
步骤必须是:
为每个环境创建一个工作区。
部署时 (CI/CD) select 工作区之前 plan/apply:
terraform 工作空间select $ENVIROMENT
使用条件(正如我之前解释的那样)create/configure 资源。
我是 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 建议的解决方案是使用工作空间:
步骤必须是:
为每个环境创建一个工作区。
部署时 (CI/CD) select 工作区之前 plan/apply:
terraform 工作空间select $ENVIROMENT
使用条件(正如我之前解释的那样)create/configure 资源。