Terraform init报Azure CLI MSAL令牌缓存用户不存在错误
问题描述
执行Terraform初始化操作时,使用Azure AD认证连接azurerm后端存储出现异常,当前环境版本如下:
- Terraform v1.2.2
- Az CLI v2.37.0
对应Terraform配置如下:
terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } } backend "azurerm" { tenant_id = "XXX" subscription_id = "XXX" resource_group_name = "XXX" storage_account_name = "XXX" container_name = "tfstate" key = "devops.terraform.tfstate" use_azuread_auth = true } }
执行terraform init命令时返回以下错误:
terraform init > Error: obtaining Authorization Token from the Azure CLI: parsing json result from the Azure CLI: waiting for the Azure CLI: exit status 1: ERROR: User 'XXX' does not exist in MSAL token cache. Run `az login`.
已尝试以下排查操作,均未解决问题:
- 直接执行
az login重新登录Azure账号 - 先执行
az logout退出登录,再重新执行az login - 删除本地MSAL token缓存文件
- 执行
az account clear清空本地存储的Azure账号配置 - 将初始使用的Terraform v1.1.x版本升级到最新的v1.2.2版本
- 核查本地
msal_token_cache.json文件,确认Account.username字段下确实存在对应用户的登录记录
解决方案
直接重新安装Az CLI即可修复该问题。
该问题大概率出现在WSL2环境中:核心诱因是Terraform与Az CLI使用的二进制版本不统一——如果两个工具没有同时使用Windows版本二进制文件,或是没有同时使用WSL2内部安装的Linux版本二进制文件,就会出现配置读取路径混乱的问题,最终导致Terraform无法正确读取Az CLI生成的MSAL令牌缓存,触发上述报错。
内容的提问来源于stack exchange,提问作者AJQREA
相关产品推荐
相关产品推荐

