Terraform后端导致Azure Blob存储错误

时间:2018-12-19 10:24:39

标签: azure terraform

我一直在使用下面的方法为Azure存储中的Terraform成功创建后端状态文件,但是由于某种原因,该文件已停止工作。我已经为存储回收了密码,尝试了两个键,每次都遇到相同的错误

backend.tf

    terraform {
    backend "azurerm" {
        storage_account_name    = "terraformstorage"
        resource_group_name     = "automation"
        container_name          = "terraform" 
        key                     = "testautomation.terraform.tfstate"
        access_key              = "<storage key>"
    }
}

返回错误

  

terrain init
      初始化后端...
      成功配置了后端“ azurerm”! Terraform将自动       除非后端配置更改,否则请使用此后端。
      错误刷新状态:存储:服务返回错误:StatusCode = 403,ErrorCode = AuthenticationFailed,ErrorMessage =服务器无法验证请求。确保包括签名在内的Authorization标头的值正确形成。       RequestId:665e0067-b01e-007a-6084-97da67000000
      时间:2018-12-19T10:18:18.7148241Z,RequestInitiated = Wed,19 Dec 2018 10:18:18 GMT,RequestId = 665e0067-b01e-007a-6084-97da67000000,API Version =,QueryParameterName =,QueryParameterValue =

任何想法我在做什么错?

5 个答案:

答案 0 :(得分:5)

另一个问题可能是时间分辨率。

我也遇到了这些问题,尝试了上述所有步骤,但无济于事。

在我的系统(Windows 10,WSL2)上发生的事情是,WSL失去了时间同步,而我却相隔数小时。 https://github.com/microsoft/WSL/issues/4245中对此行为进行了描述。

对我来说,它有助于

  • 在WSL(sudo hwclock -s)中获得适当的时间,并且

  • 重新启动WSL

希望,这也会对其他人有所帮助。

答案 1 :(得分:2)

对我有用的是删除本地.terraform文件夹,然后重试。

答案 2 :(得分:0)

应该有一个.terraform目录,您可以从中运行terraform init命令。 删除.terraform或将其移至Someotehr名称。下次运行terraform init时,它将使用新的init重新创建该目录。

答案 3 :(得分:0)

以下是一些建议:

  • 运行:terraform init -reconfigure
  • 确认您的“ terraform /后端”凭据。
  • 如果您的Terraform包含一些“ azurerm_storage_account/network_rules”以允许某些IP地址,或者确保您已连接到正确的VPN网络。
  • 如果上述方法不起作用,请运行TF_LOG=TRACE terraform init进行进一步调试。

答案 4 :(得分:0)

请确保您已通过Azure云的正确身份验证。

如果从外部运行Terraform,请重新运行:az login

如果您在实例上运行Terraform,则可以使用managed identities或通过定义以下环境变量来实现:

ARM_USE_MSI=true
ARM_SUBSCRIPTION_ID=xxx-yyy-zzz
ARM_TENANT_ID=xxx-yyy-zzz

或只运行az login --identity,然后分配正确的角色(azurerm_role_assignment,例如“贡献者”)和适当的策略(azurerm_policy_definition)。

另请参阅: