添加新资源类型后azurecaf_name生成的RG名称变更,如何避免资源重建?
问题原因
azurecaf_name资源会基于所有配置参数(包括resource_types列表)计算哈希值,以此生成随机后缀。当你修改resource_types添加新资源类型时,整个资源的计算哈希发生变化,导致生成的资源组名称变更,触发资源重建。
解决方案
推荐将资源组的命名规则与其他资源拆分,彻底隔离变更影响:
# 独立配置资源组的命名规则,不受其他资源类型变更影响 resource "azurecaf_name" "rg_name" { name = var.appname resource_type = "azurerm_resource_group" prefixes = [var.environment] suffixes = [var.resource_group_location_short] random_length = 5 clean_input = false } # 为其他资源(含新增的存储账户)单独配置命名规则 resource "azurecaf_name" "service_names" { name = var.appname resource_types = ["azurerm_mssql_server", "azurerm_mssql_database", "azurerm_app_service_plan", "azurerm_storage_account"] prefixes = [var.environment] suffixes = [var.resource_group_location_short] random_length = 5 clean_input = false }
后续引用资源组名称时使用azurecaf_name.rg_name.result,其他资源使用azurecaf_name.service_names.results["对应资源类型"]即可。
如果不想拆分资源,也可以通过生命周期规则忽略resource_types的变更,但此方法可能影响新资源的命名计算,需谨慎使用:
resource "azurecaf_name" "names" { name = var.appname resource_type = "azurerm_resource_group" resource_types = ["azurerm_mssql_server", "azurerm_mssql_database", "azurerm_app_service_plan", "azurerm_storage_account"] prefixes = [var.environment] suffixes = [var.resource_group_location_short] random_length = 5 clean_input = false lifecycle { ignore_changes = [resource_types] } }
内容的提问来源于stack exchange,提问作者me.at.coding
相关产品推荐
相关产品推荐

