在Terraform中增加了自动代码生成功能
terraform的v1.5.0版本发布了。
导入功能的增强是关键。太好了。
terraform的导入功能
以前已经存在导入功能,但是只能将现有资源放置在terraform的管理下(在******.tfstate文件中进行描述)。
尽管能以此为基础进行编写。
从这次更新开始,可以自动生成tf文件。
即使没有特别了解terraform,只要能正确创建资源,
就能按照“资源创建→terraform创建”的流程编写terraform代码。
当然,在terraform内部还需要进行结构调整。
这有点像在编写Excel VBA时,将繁琐的部分记录为Excel宏,
然后根据这个宏写出代码的想法。
方法
限界構成 jiè – Translate to English: “Boundary composition”.
就这样。
importer
| -- generated(directory)
| -- provider.tf
| -- import.tf
内部构成
需要在import.tf中记录资源的id和创建资源时的详细信息。
需要指定要导入的资源类型,
因此需要提前查找该信息。
以下是指定EC2实例的示例。
import {
id = "i-xxxxxxxx" # リソースの識別子
to = aws_instance.ec2 # import対象
}
例子
从控制台中获取已创建的EC2实例的实例ID。
这对应于 import.tf 中的 id。
另外,在terraform的状态管理器中,资源的描述应该是aws_instance,因此应将其记载在to中。
在转移到importer目录之后,执行以下操作。
$ terraform init
$ terraform plan -generate-config-out=generated/instance.tf
成功执行时,将在运行时生成一个以指定名称命名的tf文件。
通过删除不必要的参数或将其转换为变量进行调整,效果会更好。
由于terraform官方说明不太容易理解,我认为这个功能非常方便。
# __generated__ by Terraform
# Please review these resources and move them into your main configuration files.
resource "aws_instance" "ec2" {
ami = "ami-xxxxxxxx"
associate_public_ip_address = true
availability_zone = "ap-northeast-1a"
cpu_core_count = 1
cpu_threads_per_core = 1
disable_api_stop = false
disable_api_termination = false
....