将现有 Azure 资源导入本地 Terraform 状态文件

Posted

技术标签:

【中文标题】将现有 Azure 资源导入本地 Terraform 状态文件【英文标题】:Import existing Azure resources into local Terraform state file 【发布时间】:2021-10-08 15:01:50 【问题描述】:

在我们开始采用 Terraform 之前,我们有大量的 Azure 资源是在不久前手动创建的。显然,现在这意味着我们有大量的协调工作要做,就将我们的 terraform 状态文件与我们的 Azure 资源同步而言。

通过 Terraform Import 命令单独导入现有资源甚至不是我们想要考虑的选项,因为这不仅很麻烦,而且由于这里涉及的资源数量庞大,而且会很耗时。

是否有另一种方法可以批量或一次操作将这些现有资源同步/导入到我们的本地状态文件?

【问题讨论】:

Google 的 Terraformer 会使资源发现稍微容易一些,但您会考虑迭代地执行此操作,因此您可以包装命令以使其稍微好一点。 【参考方案1】:

说实话,这是目前 Terraform 的缺点之一。我建议创建一个包含所有资源导入命令的电子表格,

就像 terraform import azurerm_xxx.xxx /subscriptions/XXXXXXXXX/resource/example 然后下一行一样,一遍又一遍。然后,您可以复制整个顺序列表并将其粘贴 1 次到终端(您正在执行 terraform 导入的地方),然后按 Enter。这需要一段时间,但它会起作用。

【讨论】:

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

Terraform 导入现有资源

如何使用 Azure ARM 模板将 VM 部署到资源组“A”并引用资源组“B”中的现有密钥保管库?

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

使用 AWS CLI 将现有资源导入 CloudFormation

在现有订阅和资源组的现有函数应用中创建 Azure 函数

当我在 Visual Studio 2017 的解决方案资源管理器中右键单击 Web 项目时,无法将添加->现有项目视为 Azure Web 作业选项