Terraform 无法列出提供商注册状态

Gur*_*epS 7 azure terraform

运行 init 后,我​​尝试在包含 tf 文件的文件夹上运行 terraform apply。

但是,我收到以下错误:

运行计划时出错:发生 1 个错误:

  • provider.azurerm:无法列出提供程序注册状态,这可能是由于凭据无效或服务主体无权使用资源管理器 API,Azure 错误:resources.ProvidersClient#List:无法响应请求:StatusCode=403 -- 原始错误:autorest/azure:服务返回错误。Stat us=403 Code="AuthorizationFailed" Message="对象 ID 为“17cd0b64-08 fb-48db-ad9f-4dd56361bb47”的客户端“17cd0b64-08fb-48db-ad9f-4dd56361bb47”无权执行操作“Microsoft.资源/订阅/提供商/重新广告'超出范围'/订阅/9a305d25-7f89-43d4-a691-62ad0f63c5c8'。”

tf 文件包含我的租户 ID、订阅 ID 以及所有其他必填字段,但错误不断发生。请指教?

编辑:下面是我的 tf 文件

  provider "azurerm" {
     subscription_id = "****"
     client_id       = "**client_id**"
  client_secret   = "****"
  tenant_id       = "**+*"
}



# Create a resource group
resource "azurerm_resource_group" "production" {
  name     = "productiongs"
  location = "West US"
}
Run Code Online (Sandbox Code Playgroud)

Eat*_*oes 8

服务主体似乎没有Contributor分配给它的角色。

只需转到门户中的订阅,选择访问控制 (IAM)并将角色分配贡献者添加到您的服务主体

在此输入图像描述

或按照这些说明操作


Beg*_*gin 3

如果没有看到您的 terraform 设置,很难知道确切的问题,但我猜您缺少 client_id 和 client_secret。

所以你的提供者看起来像这样:

provider "azurerm" {
  subscription_id = "..."
  client_id       = "..."
  client_secret   = "..."
  tenant_id       = "..."
}
Run Code Online (Sandbox Code Playgroud)

更多信息请参见: https: //www.terraform.io/docs/providers/azurerm/