【问题标题】:Terraform fails using an Azure service principal for authenticationTerraform 使用 Azure 服务主体进行身份验证失败
【发布时间】:2018-11-03 22:28:40
【问题描述】:

问题

在 Azure 中创建服务主体后尝试使用 terraform planterraform apply 时,Terraform 出现以下错误:

provider.azurerm:找不到有效(未过期)的 Azure CLI 身份验证令牌。请运行az login

复制步骤

通过az ad sp create-for-rbac 在 Azure 中创建服务主体。

将服务主体配置作为提供程序块添加到您的.tf 文件中:

provider "azurerm" {
  alias = "tf_bootstrap"
  client_id = "55708466-3686-xxxx-xxxx-xxxxxxxxxxxx"
  client_secret = "88352837-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  tenant_id = "129a861e-a703-xxxx-xxxx-xxxxxxxxxxxx"
  subscription_id = "c2e9d518-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

resource "azurerm_resource_group" "dev" {
  name     = "dev-rg"
  location = "East US"
}

尝试运行terraform plan

【问题讨论】:

    标签: azure terraform terraform-provider-azure


    【解决方案1】:

    如果在provider block 中使用alias 键,如问题所示,则必须在每个 数据或资源块中指定provider 键。

    例如:

    // When a provider alias has been defined.
    resource "azurerm_resource_group" "dev" {
      provider = "azurerm.tf_bootstrap"
      name     = "dev-rg"
      location = "East US"
    }
    

    如果您错过了某个资源或数据块的provider,则该块的身份验证将失败。


    但请注意,在原始提供程序块中指定alias 键也是有效的。在这种情况下,不再需要在每个资源和数据块中指定provider 键; provider 键可以省略。

    // When a provider alias has not been defined.
    resource "azurerm_resource_group" "dev" {
      name     = "dev-rg"
      location = "East US"
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-21
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 2017-07-26
      • 1970-01-01
      • 2021-07-08
      相关资源
      最近更新 更多