如何为azurerm_app_service v2配置新版AUTH并解决Terraform更新异常
Azure App Service 新版认证(V2)Terraform配置解决方案
问题根源
你当前使用的azurerm_app_service资源内联的auth_settings块仅对应旧版V1认证配置,手动在Azure门户升级为V2认证后,Terraform状态与云端实际配置不匹配,且旧配置块无法识别V2的结构,因此触发更新冲突。
解决步骤
- 升级azurerm Provider到3.0及以上版本,该版本开始支持独立的V2认证资源配置
- 删除
azurerm_app_service资源代码中整个auth_settings块,移除旧版V1配置的推送逻辑 - 新增独立的
azurerm_app_service_authentication资源配置V2认证,示例配置如下:
resource "azurerm_app_service_authentication" "as_auth" { for_each = var.appservice app_service_id = azurerm_app_service.as[each.key].id enabled = true default_provider = "AzureActiveDirectory" unauthenticated_action = "RedirectToLoginPage" active_directory_v2 { client_id = var.as_client_id client_secret = var.as_client_secret issuer = "https://login.microsoftonline.com/XXXXXX/v2.0/" allowed_audiences = [ "https://${lookup(each.value, "appservice_name")}.azurewebsites.net" ] } # 其他V2专属配置(如token存储、cookie规则等)可按需补充 }
- 对齐已手动升级应用的Terraform状态
对于已经手动升级完成的应用,无需重新创建配置,直接执行导入命令将云端现有V2配置同步到Terraform状态:terraform import azurerm_app_service_authentication.as_auth[<对应应用的for_each键名>] /subscriptions/<你的订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.Web/sites/<应用服务名>/config/authsettingsV2 - 验证配置
执行terraform plan,确认无配置漂移、无需要变更的内容即表示配置对齐成功,后续对App Service的其他更新操作就会恢复正常。
其他未手动升级的应用,直接应用上述配置后执行
terraform apply即可自动从V1认证迁移到V2认证,无需手动操作门户。
内容的提问来源于stack exchange,提问作者Shankar
相关产品推荐
相关产品推荐

