用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配置文件。