You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform条件配置基础设施:如何为short_term_retention_policy添加环境判断逻辑

实现条件配置short_term_retention_policy块的两种方案

根据你的实际需求可以选择对应实现方式:

方案1:仅Prod环境生成该配置块

如果你需要非Prod环境完全不配置short_term_retention_policy(走服务器默认策略),可以使用Terraform的dynamic动态块实现条件生成:

resource "azurerm_mssql_database" "war" {
  name                        = "${local.clSqlDatabaseName}-${var.environment}"
  server_id                   = jokes
  min_capacity                = 0.5
  max_size_gb                 = 100
  zone_redundant              = false
  collation                   = "SQL_Latin1_General_CP1_CI_AS"
  sku_name                    = "GP_S_Gen5_2"
  auto_pause_delay_in_minutes = var.environment == "Prod" ? -1 : 60

  dynamic "short_term_retention_policy" {
    # 只有环境为Prod时才生成该块
    for_each = var.environment == "Prod" ? [1] : []
    content {
      retention_days = 35
    }
  }
}

原理说明:for_each接收一个列表,当判断条件为真时列表有1个元素,会生成1个对应的配置块;条件为假时列表为空,不会生成该块。

方案2:所有环境都生成该块,仅参数值不同

如果你需要所有环境都配置short_term_retention_policy,只是保留天数有差异,直接在参数值里写三元表达式即可:

short_term_retention_policy {
  # 示例:Prod环境保留35天,其他环境保留7天
  retention_days = var.environment == "Prod" ? 35 : 7
}

内容的提问来源于stack exchange,提问作者Jason_Hough

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:06:04