如何基于环境变量有条件启用/禁用azurerm_cdn_endpoint规则与规则动作
azurerm_cdn_endpoint规则动态配置实现方案
你可以通过Terraform的动态嵌套块或者规则内置的enabled参数两种方式实现按环境差异化配置,具体如下:
方案1:动态块方式(prod环境完全移除规则)
当var.env不等于dev时,直接不生成对应的global_delivery_rule配置块,适合不需要在prod环境保留规则定义的场景:
resource "azurerm_cdn_endpoint" "cdn_endpoint" { # 原有其他配置保持不变 name = "your-cdn-endpoint" profile_name = azurerm_cdn_profile.your_cdn.name resource_group_name = azurerm_resource_group.your_rg.name # 其余参数省略... dynamic "global_delivery_rule" { # 条件匹配时返回长度为1的列表生成块,不匹配返回空列表不生成块 for_each = var.env == "dev" ? [1] : [] content { cache_expiration_action { behavior = "BypassCache" } } } }
方案2:enabled参数控制(prod环境保留规则但禁用)
如果需要在所有环境保留规则定义,只是非dev环境禁用规则,可以直接用global_delivery_rule内置的enabled参数控制:
resource "azurerm_cdn_endpoint" "cdn_endpoint" { # 原有其他配置保持不变 # 其余参数省略... global_delivery_rule { # dev环境启用规则,其他环境禁用 enabled = var.env == "dev" cache_expiration_action { behavior = "BypassCache" } } }
两种方式可根据你的实际配置需求选择,如果有多条差异化规则,可以分别给每条规则添加对应的条件判断即可。
内容的提问来源于stack exchange,提问作者klodoma
相关产品推荐
相关产品推荐

