用Azure terrafy进行简单导入

Azure Terrafy是什么?

这是一个用于将现有Azure资源纳入terraform管理的工具。
虽然terraform官方有terraform import的功能,但是需要预先定义资源的.tf文件,并且只能创建tfstate文件,而terrafy还会创建配置文件(.tf)。
此外,terrafy还可以按照资源组进行导入。(而terraform import无法按照资源组进行导入,需要指定每个资源。)

参考链接:
https://qiita.com/koudaiii/items/10ae59a817abc438b71c
https://azure.github.io/aztfy/#1

亲自动手

已经完成了对Azure的认证,Azure CLI和aztfy的安装。
安装方法请参考:https://github.com/Azure/aztfy#install

在没有Terraform配置文件的目录上运行aztfy。
对于所需的资源,按Enter键。
同时,也可以更改资源名称。

~/aztfy_test ❯ ls -a
.  ..
~/aztfy_test ❯ aztfy resource-group aztfy-resources

   Azure Terrafy

     aztfy-resources

    9 items
 
  |skip…

我将在w中开始导入。

   Azure Terrafy

  ⣷   Importing /subscriptions/xxxx-xxxx/resourceGroups/aztfy-resources...
  ...
  ...
  ...
  ...
  …

我会检查输出功率。

~/aztfy_test ❯ ls -a
.  ..  .terraform  .terraform.lock.hcl  aztfyResourceMapping.json  main.aztfy.tf  provider.tf  terraform.tfstate

只需要一个选项:
我们可以非常轻松地创建.tf文件和tfstate文件!

Terrafy 的应用场景

根据https://azure.github.io/aztfy/#11的描述,terrafy似乎并不支持使用for_each等方法或使用模块的配置文件写法。如果想要创建简单的配置文件,可以使用terrafy。

配置文件不需要优雅,模块也不需要生成。

当.tf文件被模块化并存在时,如果希望根据.tf文件的资源定义创建tfstate,可能需要一些技巧。

你可以尝试使用Terrafy之后,使用Move模块重新调整代码。

也可以选择使用terraform import的方法,尽管这需要一些额外的工作。

~/aztfy_test ❯ terraform import module.test.azurerm_function_app.func /subscriptions/xxxx-xxxx/resourceGroups/xxxxx……

其他工具

我也查找了除了terrafy之外的导入工具。

在v1.1的最终发布中似乎已经移除了。
它似乎只针对一个资源,而不考虑资源之间的依赖关系。

・Terrafy(不是Azure Terrafy而是Terrafy)会帮助您创建配置文件和tfstate文件,但您需要提前创建类似于.tf文件的资源定义文件,命名为.tfy。

・地球形成者
在导入后可能需要微调构成文件。

由于Azure Terraform的作用是创建有效的配置文件(例如,在通过创建的配置文件执行terraform计划时没有差异),因此这一点似乎是不同的。

自动生成有效的Terraform配置文件。

广告
将在 10 秒后关闭
bannerAds