我们有大量的Azure资源是在我们采用Terraform之前手工创建的。显然,这意味着我们现在有大量的协调工作要做,就同步我们的地形状态文件与我们的Azure资源而言。
通过Terraform Import命令单独导入现有资源甚至不是我们想要考虑的选项,因为它不仅麻烦,而且由于这里涉及的资源数量庞大,将非常耗时。
是否有其他方法可以同步/导入这些现有的资源到我们的本地状态文件批量或在一个单一的操作?
我知道这是一个非常古老的问题,但我们有同样的问题,并使用微软的aztfexport来导入我们的东西,一次一个资源组。
我们的流程:
-
从您的本地terraform目录:
aztfexport rg -o tempdir——非交互式——continue——hcl-only "您的资源组名">
-
查看生成的tempdir/main。Tf和资源图,仔细检查每件事。将自动生成的地形对象名称重命名为对您有意义的名称。
-
一旦你满意,运行:
aztfexport map——非交互式——append './tempdir/aztfexportResourceMapping.json'
-
将自动生成的main.aztfexport.tf文件中的所有内容移到您想要的位置并提交到源代码
当然,很多东西都可能出错,但这是高级别的。这也产生了很多我从来没有意识到的对象,比如各种映射对象,terraform可以为你管理,这在Azure门户UI中是不明显的。
说实话,这是Terraform目前的失败之一。我建议创建一个包含所有资源导入命令的电子表格,
like terraform import azurerm_xxx。xxx/subscriptions/XXXXXXXXX/resource/example,然后下一行是相同的,不断重复。然后,您可以复制整个顺序列表并在终端中粘贴1次(您正在执行terraform导入),然后按enter键。这需要一些时间,但会奏效的。