带有 azure CLI 的 Terraform - 错误构建帐户
Posted
技术标签:
【中文标题】带有 azure CLI 的 Terraform - 错误构建帐户【英文标题】:Terraform with azure CLI - error building account 【发布时间】:2020-06-03 08:39:34 【问题描述】:使用提供程序块
provider "azurerm"
subscription_id = var.subscription_id
version = "=1.44"
成功登录后
az login
运行
terraform plan
我收到以下错误:
Error: Error building account: Error getting authenticated object ID: Error parsing json result from the Azure CLI: Error waiting for the Azure CLI: exit status 2
on main.tf line 21, in provider "azurerm":
21: provider "azurerm"
更新:
如果我将提供程序块更改为:
provider "azurerm"
version = "~> 1.43"
并设置环境变量
ARM_USE_MSI=true
ARM_SUBSCRIPTION_ID=<...>
ARM_TENANT_ID=<...>
HTTP_PROXY=<...>
HTTPS_PROXY=<...>
http_proxy=<...>
https_proxy=<...>
在执行 terraform plan 之后,我收到以下错误:
与 169.254.169.254 的连接失败。没有路由到主机。
在我看来,服务端点 IP 被“硬编码”到 terraform 客户端中,这很奇怪。
【问题讨论】:
过时的 terrafrom\cli? Terraform v0.12.20 + provider.azurerm v1.44.0 + provider.random v2.2.1 azure-cli (2.0.33) 你在 VM 中使用 CLI 吗?您如何使用 CLI 登录?虚拟机身份或服务主体? @CharlesXu:与此同时,我发现删除 ARM_USE_MSI=true 可以解决我的问题。无论如何,感谢您的帮助! 对我来说,另一个 'az login' 有帮助 【参考方案1】:即使我已经通过 az cli 登录,强制另一个:
az login
帮我解决了这个问题。
【讨论】:
【参考方案2】:删除变量
ARM_USE_MSI=true
解决了我的问题。
此变量告诉 terraform 使用托管服务标识。请参阅docs。问题是,从那时起使用的 Azure 实例元数据服务端点(在上述 IP 上可用)只能从 VM 内访问,而我正在从桌面运行 terraform。
【讨论】:
也许你可以展示更多的东西。例如,它解决您的问题的原因。【参考方案3】:az login --tenant TENANT_ID
使用租户 ID 解决
最初,我尝试使用“az login”登录,但收到您发布的类似错误。
【讨论】:
以上是关于带有 azure CLI 的 Terraform - 错误构建帐户的主要内容,如果未能解决你的问题,请参考以下文章
带有 graphql cli 的 Azure node.js 相对路径
如何将 Azure DevOps Extension for Azure CLI 与 Azure DevOps Server 一起使用?