执行 Terraform 执行计划时出现凭据失败

Posted

技术标签:

【中文标题】执行 Terraform 执行计划时出现凭据失败【英文标题】:Credential Failure while executing Terraform execution plan 【发布时间】:2016-12-21 07:04:09 【问题描述】:

我正在尝试执行下面给出的示例地形计划。

# Configure the Microsoft Azure Provider
provider "azurerm" 
  subscription_id = "..."
  client_id       = "..."
  client_secret   = "..."
  tenant_id       = "..."


    # Create a resource group
    resource "azurerm_resource_group" "production" 
        name     = "production"
        location = "West US"
    

    # Create a virtual network in the web_servers resource group
    resource "azurerm_virtual_network" "network" 
      name                = "productionNetwork"
      address_space       = ["10.0.0.0/16"]
      location            = "West US"
      resource_group_name = "$azurerm_resource_group.production.name"

      subnet 
        name           = "subnet1"
        address_prefix = "10.0.1.0/24"
      

      subnet 
        name           = "subnet2"
        address_prefix = "10.0.2.0/24"
      

      subnet 
        name           = "subnet3"
        address_prefix = "10.0.3.0/24"
      
    `enter code here`

我按照 [1] 通过创建 Active Directory 应用程序生成凭据,并在上述计划中使用了正确的订阅 ID、客户端 ID、客户端秘密、租户 ID,并针对它执行了“terraform 计划”。但我遇到了错误。

错误刷新状态:发生 1 个错误:

访问 Azure 资源管理器 API 的凭据可能不正确,或者 服务主体无权使用 Azure 服务管理 API。

[1]https://azure.microsoft.com/en-us/documentation/articles/resource-group-create-service-principal-portal/

对此有什么想法吗?

【问题讨论】:

您需要自动部署权限,并不是因为您可以在门户中创建虚拟机才能使用 terraform。您需要先访问它。 【参考方案1】:

似乎在 terraform 文档中,他们没有包括将角色分配给服务主体的步骤。按照以下步骤操作即可。

1) 通过 Azure CLI 访问此链接 https://azure.microsoft.com/en-us/documentation/articles/resource-group-authenticate-service-principal-cli/ 创建服务主体,该链接还将角色分配给服务主体 2) 转到 Azure RM 门户-->活动目录-->应用注册-->创建密钥 3) 在 .tf 文件中使用上述适当的值。

然后运行命令 terraform plan。

【讨论】:

现在好像已经更新了,一步一步来就可以了。terraform.io/docs/providers/azurerm/r/virtual_machine.html 对不起,是这个链接。 terraform.io/docs/providers/azurerm/index.html

以上是关于执行 Terraform 执行计划时出现凭据失败的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2008 r2执行维护计划时出现错误

模块解析失败:在部署Heroku时出现意外令牌(14:6)

执行谷歌数据流作业时出现 HTTP 传输错误

使用 httr get 时出现错误 401

通过 Terraform 添加 AWS 安全组时出现问题

在openstack中启动服务器时出现terraform错误