将现有资源导入 Terraform 状态文件时出错

Posted

技术标签:

【中文标题】将现有资源导入 Terraform 状态文件时出错【英文标题】:Error Importing existing resources into Terraform State File 【发布时间】:2019-05-25 18:54:08 【问题描述】:

我正在尝试重构我的一些模块,这需要我将现有资源移动到不同的状态文件中。

通常导入资源是单调但简单的。

在尝试导入任何这些资源时,我不知道如何解释以下“路径段的数量不能被 2 整除”错误。 p>

这发生在我尝试导入的所有资源上(过去我已经成功完成了很多次)

CLI> terraform import azurerm_virtual_machine.east_mm01_vm /resource/subscriptions/XXX/resourceGroups/XXX/providers/Microsoft.Compute/virtualMachines/stguemm01

Acquiring state lock. This may take a few moments...

azurerm_virtual_machine.east_mm01_vm: Importing from ID "/resource/subscriptions/XXX/resourceGroups/XXX/providers/Microsoft.Compute/virtualMachines/stguemm01"...
azurerm_virtual_machine.east_mm01_vm: Import complete!

  Imported azurerm_virtual_machine (ID: /resource/subscriptions/XXX/resourceGroups/XXX/providers/Microsoft.Compute/virtualMachines/stguemm01)
azurerm_virtual_machine.east_mm01_vm: Refreshing state... (ID: /resource/subscriptions/XXX...soft.Compute/virtualMachines/stguemm01)

Error: azurerm_virtual_machine.east_mm01_vm (import id: /resource/subscriptions/XXX/resourceGroups/XXX/providers/Microsoft.Compute/virtualMachines/stguemm01): 1 error(s) occurred:

* import azurerm_virtual_machine.east_mm01_vm result: /resource/subscriptions/XXX/resourceGroups/XXX/providers/Microsoft.Compute/virtualMachines/stguemm01: azurerm_virtual_machine.east_mm01_vm: The number of path segments is not divisible by 2 in "resource/subscriptions/XXX/resourceGroups/XXX/providers/Microsoft.Compute/virtualMachines/stguemm01"

地形版本:

CLI> terraform -v
Terraform v0.11.11
+ provider.azurerm v1.20.0

【问题讨论】:

【参考方案1】:

您的资源 ID 错误 (/resource/subscriptions/XXX/resourceGroups/XXX/providers/Microsoft.Compute/virtualMachines/stguemm01)。应该是这样的:

/subscriptions/XXX/resourceGroups/XXX/providers/Microsoft.Compute/virtualMachines/stguemm01

【讨论】:

奇怪,我可以发誓我试过了。您,先生(或女士),是我的英雄。这就是问题所在! 我遇到了同样的问题,我的行显示为 The number of path segments is not divisible by 2 in "subscriptions/xxx..... 。所以,这个答案并没有真正帮助我。我不知道如何将其更改为/subscriptions...。 v2.93.0 terraform 然后创建一个新问题 我做到了:***.com/questions/70808969/… 我可能也会赏金。

以上是关于将现有资源导入 Terraform 状态文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

Terraform 导入现有资源

使用 Terraform 导入 Azure 上的现有资源

Terraform:导入 aws 资源时出现凭证错误 - 调用 sts 时出错:GetCallerIdentity:ExpiredToken

Terraform 和 AWS:修改现有策略

将现有 GKE 集群添加到 terraform stat 文件

Terraform 初始状态文件创建