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
相关产品推荐
相关产品推荐

