带有 azure CLI 的 Terraform - 错误构建帐户

bay*_*erb 8 azure terraform terraform-provider-azure

使用提供者块

provider "azurerm" {
  subscription_id = var.subscription_id
  version         = "=1.44"
}
Run Code Online (Sandbox Code Playgroud)

并成功登录后

az login
Run Code Online (Sandbox Code Playgroud)

跑步

terraform plan
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

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" {
Run Code Online (Sandbox Code Playgroud)

更新:

如果我将提供程序块更改为:

provider "azurerm" {
 version = "~> 1.43"
}
Run Code Online (Sandbox Code Playgroud)

并设置环境变量

ARM_USE_MSI=true
ARM_SUBSCRIPTION_ID=<...>
ARM_TENANT_ID=<...>
HTTP_PROXY=<...>
HTTPS_PROXY=<...>
http_proxy=<...>
https_proxy=<...>
Run Code Online (Sandbox Code Playgroud)

比执行 terraform 计划后,我收到以下错误:

与 169.254.169.254 的连接失败。没有到主机的路由。

在我看来,这很奇怪,服务端点 IP 被“硬编码”到 terraform 客户端中。

Jam*_*e D 5

即使我已经通过 az cli 登录,强制另一个:

az login
Run Code Online (Sandbox Code Playgroud)

为我解决了这个问题。


bay*_*erb 1

删除变量

ARM_USE_MSI=真

解决了我的问题。

此变量告诉 terraform 使用托管服务身份。请参阅文档。问题是,从该点使用的 Azure 实例元数据服务端点(在上述 IP 上可用)只能从 VM 内访问,而我是从桌面运行 terraform。