在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
  ....
广告
将在 10 秒后关闭
bannerAds