我在Azure中的存储帐户上部署了一个新的文件共享,此后我就无法再执行平台化计划,而是收到以下错误:
azurerm_storage_account_customer_managed_key.this[0]: Refreshing state... [id=/subscriptions/**********/resourceGroups/myrg/providers/Microsoft.Storage/storageAccounts/myaccount]
╷
│ Error: shares.Client#GetProperties: Failure sending request: StatusCode=0 -- Original Error: context deadline exceeded
│
│ with azurerm_storage_share.this["share1"],
│ on main.tf line 155, in resource "azurerm_storage_share" "this":
│ 155: resource "azurerm_storage_share" "this" {
│
╵
Destroy False detailedExitCode: 1
Error detected by Terraform
##[error]Script failed with exit code: 1
我试过将存储帐户网络设置为公共(从所有网络启用),结果还是一样。我试过不同的Terraform版本(1.2.6,1.0.4,1.2.7,1.2.0),结果都一样。
我在网上查了一下,找到了这两张票,它们看起来很相似,但还没有得到答案(尽管它们不是来自Stack Overflow):
https://github.com/hashicorp/terraform-provider-azurerm/issues/17851
https://github.com/hashicorp/terraform-provider-azurerm/issues/2977
我已经用完了线索调查的时刻,我会很感激,如果有人可能有新的想法是什么原因的问题。
如果我能分享更多信息,请告诉我。
2条答案
按热度按时间xdnvmnnf1#
在我的情况下,我得到了类似的错误,当我没有清除状态文件(TF),其中存在的其他资源,这是不存在于Azure门户.(因为我已经手动删除了它在门户中,但仍然存在于terraform状态文件.)
我删除了蔚蓝色门户中不存在的资源,然后试图执行相同的操作。
或者,如果某些源存在于azure中而不在terraform状态文件中。在这种情况下,请确保使用
terraform import <terraformid> <resourceId>
导入资源,类似于azurerm_resource_group|资源类|registry.terraform.io或此SO参考,方法是检查Azure Portal和terraform.tfstate文件中的资源是否不匹配。我在自己的环境中尝试过,并且能够执行
terraform plan
和terraform apply
结果:
此外,请检查位置是否正确指定了资源组位置,如果是在VM中创建的,请确保VM和创建的资源位于同一位置。
参考资料:
ibps3vxo2#
因此Terraform使用私有URL来管理文件共享。在我们的案例中,这些端点的DNS解析无法正常工作。您可以使用命令
terraform console
获取私有端点的URL,然后调查资源>azurerm_storage_share.file_share
。它将显示私有URL。随后,使用nslookup or dig
命令来确定您是否可以将URL解析为IP地址。如果您无法解析URL,则有几个选项。例如,您可以将它们添加到您的/etc/hosts file
。这解决了我们的问题。另一个选项是将专用链接添加到专用DNS区域,并将本地DNS转发到此专用区域。