Terraform计划因Azure刷新状态而失败

时间:2019-07-31 23:36:12

标签: azure terraform terraform-provider-azure

Terraform计划以及成功的天蓝色登录后返回以下错误。不知道为什么Terraform在刷新状态时抱怨凭据无效,即使凭据已成功执行。

    terraform plan
  `[0m[1mRefreshing Terraform state in-memory prior to plan...[0m The refreshed state will be used to calculate this plan, but will not be persisted to local or remote state storage.
[0m
[31m
[1m[31mError: [0m[0m[1mError refreshing state: 1 error occurred:
    * provider.azurerm: Error building AzureRM Client: Error populating Client ID from the Azure CLI: No Authorization Tokens were found - please re-authenticate using `  `az login`.

1 个答案:

答案 0 :(得分:1)

要在Terraform for Azure中进行身份验证,我们通常使用Azure CLI和Azure服务主体。

通常要使用Azure CLI,我们不会在terraform中设置提供程序块,或者仅像下面这样设置提供程序:

provider "azurerm" {

  version = "=1.28.0"

}

我建议您不要在Terraform文件中设置提供程序。如果租户有多个订阅,则在通过Azure CLI登录时,还可以设置特殊订阅。

要使用Azure服务主体,您需要在terraform中设置提供者块,如下所示:

provider "azurerm" {

  version = "=1.28.0"

  subscription_id = "00000000-0000-0000-0000-000000000000"
  client_id       = "00000000-0000-0000-0000-000000000000"
  client_secret   = "xxxxxxx"
  tenant_id       = "00000000-0000-0000-0000-000000000000"
}

我认为,该错误可能表明您在Terraform提供程序中设置了客户端ID,这与您成功登录的CLI不同。

正如您所说,您已经通过Azure CLI成功登录,因此最简单的方法就是删除Terraform文件中的提供程序。