Visual Studio Code中Terraform执行plan/apply时JSON解析错误求助
Terraform AzureRM部署JSON解析错误排查
问题现象
作为Terraform新手,使用AzureRM官方示例在VS Code部署资源组时,执行terraform apply或terraform plan时出现JSON解析错误,但terraform init、terraform fmt、terraform validate均正常运行,az login也能成功连接Azure。
错误信息
╷ │ Error: building AzureRM Client: please ensure you have installed Azure CLI version 2.0.79 or newer. Error parsing json result from the Azure CLI: unmarshaling the result of Azure CLI: invalid character 'C' looking for beginning of value. │ │ with provider["registry.terraform.io/hashicorp/azurerm"], │ on main.tf line 10, in provider "azurerm": │ 10: provider "azurerm" { │ ╵
相关配置与代码
main.tf代码
terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "3.28.0" } } } provider "azurerm" { features {} } resource "azurerm_resource_group" "example" { name = "example-resourcegroup" location = "eu-west" }
版本信息
- Azure CLI版本:
azure-cli 2.41.0 core 2.41.0 telemetry 1.0.8 Dependencies: msal 1.20.0b1 azure-mgmt-resource 21.1.0b1
- Terraform版本:
Terraform v1.2.5 on windows_amd64 + provider registry.terraform.io/hashicorp/azurerm v3.28.0
解决方案
这类错误通常是Azure CLI输出非JSON内容导致Terraform解析失败,可按以下步骤排查:
- 强制CLI输出JSON格式:执行
az configure --defaults output=json,确保Azure CLI始终返回标准JSON内容;Windows环境可临时设置环境变量set AZURE_CLI_OUTPUT=json,Linux/macOS用export AZURE_CLI_OUTPUT=json。 - 重置登录状态:执行
az logout退出当前登录,再用az login重新登录;必要时删除Azure CLI缓存目录(Windows为%USERPROFILE%\.azure,Linux/macOS为~/.azure)后重新登录。 - 版本兼容性调整:升级Azure CLI到最新稳定版,同时考虑将Terraform升级至1.5+版本,匹配对应的azurerm provider(如3.70+),修复潜在的版本兼容问题。
- 明确指定订阅:若存在多个Azure订阅,在provider块中添加
subscription_id = "你的订阅ID",或执行az account set --subscription "订阅ID/名称"设置默认订阅,避免多订阅信息干扰解析。 - 排查终端干扰:使用系统原生终端(Windows CMD/PowerShell、Linux终端)执行命令,排除VS Code终端自定义提示符、额外脚本输出对CLI结果的干扰。
内容的提问来源于stack exchange,提问作者M. Mayhem
相关产品推荐
相关产品推荐

