Terraform配置azurerm后端出现use_microsoft_graph弃用警告如何解决
编写用于创建Azure资源组的Terraform配置时,配置azurerm后端将tfstate状态文件存储在共享存储位置而非本地,执行terraform plan命令时出现如下警告:
Warning: "use_microsoft_graph": [DEPRECATED] This field now defaults to
trueand will be removed in v1.3 of Terraform Core due to the deprecation of ADAL by Microsoft.
经排查确认,该警告由backend "azurerm"配置块引发,移除远程状态配置后警告不再出现,使用的配置文件内容如下:
# Terraform Block terraform { required_version = ">= 1.0.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 3.0" } } # Terraform State Storage to Azure Storage Container backend "azurerm" { resource_group_name = "storage-rg" storage_account_name = "tfstatetrial" container_name = "tfstatefiles" key = "terraform.tfstate" } } # Provider Block provider "azurerm" { features {} } # Resource-1: Azure Resource Group resource "azurerm_resource_group" "myrg" { name = "simple-rg" location = "centralindia" }
这个警告属于版本迭代过渡阶段的兼容性提示:
早期azurerm后端默认使用ADAL协议完成Azure认证,后续微软正式弃用ADAL,全面切换到基于Microsoft Graph的MSAL认证体系。从azurerm 3.x版本开始,use_microsoft_graph参数的默认值已经设置为true,但后端初始化的参数校验逻辑仍保留了对该字段的检测:只要配置azurerm后端时没有显式声明该参数,就会弹出弃用提示,和业务资源的provider配置无关,是后端内置逻辑触发的提示。
方案1:当前版本快速消除警告
在azurerm后端配置块中显式添加use_microsoft_graph = true即可,修改后的后端配置示例:backend "azurerm" { resource_group_name = "storage-rg" storage_account_name = "tfstatetrial" container_name = "tfstatefiles" key = "terraform.tfstate" use_microsoft_graph = true }修改完成后执行
terraform init -reconfigure重新初始化后端,后续执行plan/apply操作时就不会再出现该警告。该参数在3.x版本的azurerm中本身就是默认生效的,显式声明不会改变任何实际运行逻辑,仅用于跳过后端的参数提示校验。方案2:升级版本彻底移除提示
该废弃参数会在Terraform 1.3及以上核心版本、azurerm 3.10及以上稳定版本中被完全移除,将两个组件升级到对应版本后,不需要在配置中额外声明use_microsoft_graph字段,也不会弹出相关警告。
*补充说明:该警告属于提示类信息,不会影响资源创建、状态文件读写等核心功能,不会导致配置执行失败,如果暂时不方便调整配置或升级版本,直接忽略该提示也不会产生功能异常。
内容的提问来源于stack exchange,提问作者VivekDev

