0

我正在尝试使用 amanaged-identity对 Azure 进行身份验证并从云terraform中的虚拟机运行。AzureUSGovernment我已按照此处找到的指南将 terraform 配置为使用managed-identity.

但是,每当我运行terraform apply/plan等时,我都会看到以下错误:

│ Error: Unable to list provider registration status, it is possible that this is due to invalid credentials or the service principal does not have permission to use the Resource Manager API, Azure error: resources.ProvidersClient#List: Failure responding to request: StatusCode=404 -- Original Error: autorest/azure: Service returned an error. Status=404 Code="SubscriptionNotFound" Message="The subscription 'xxxxxxxxx-xxxx-xxxxx-xxxxx-xxxxxxxxxxx' could not be found."

(xxxxxxxxx-xxxx-xxxxx-xxxxx-xxxxxxxxxxx 是我在编辑订阅 ID)

以下是我的配置片段和我的引导工作流程/过程:

  1. 创建具有托管标识的虚拟机,为其分配Owner角色(仅用于测试目的)
  2. az cloud set -n AzureUSGovernment
  3. az login --identity
  4. 运行地形代码。

其他需要注意的重要事项:

  • 完全相同的配置/过程在 Azure Commercial 中运行良好。
  • 从 VM运行az命令工作正常(我有 RBAC 权限在帐户中执行操作)
  • 这是我的provider.tf
provider "azurerm" {
  features {}
  use_msi = true
  subscription_id = "MYSUB-ID"
  tenant_id = "MYTENANT-ID"
}

任何帮助都非常感谢!谢谢!

4

1 回答 1

1

我尝试使用我的环境对其进行测试,但得到的错误与您得到的完全相同:

在此处输入图像描述

注意:这是因为我使用的订阅不在 Azure 政府云上,而是在 Azure 云上。请确保您使用的是您已为其创建托管标识的正确订阅,并确保其所在的环境。

并且,在您检查订阅和环境后,您可以跳过这些步骤:

Run az cloud set -n AzureUSGovernment
Run az login --identity

相反,您可以直接使用 terraform 代码:

provider "azurerm" {
  features {}
  use_msi = true
  subscription_id = "948d4068-xxxx-xxxxxx-xxxxxxx-xxxxxxxx"
  tenant_id = "72f988bf-xxxx-xxxxx-xxxxxx-xxxxxxxxx"
  environment = "usgovernment"
}

resource "azurerm_resource_group" "test" {
    name="xterraformtest12345"
    location ="east us"
}

笔记:

如果您的订阅是公开的,则无需设置环境,如果是其他订阅,则可以根据需要设置环境。

输出:由于订阅位于公共云中,因此删除环境后

在此处输入图像描述

于 2021-09-28T05:28:38.070 回答