0

问题

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

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

重现步骤

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

将服务主体配置作为提供程序块添加到您的.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

4

1 回答 1

1

如果在提供程序块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"
}
于 2018-05-24T16:01:34.827 回答