Terraformでimportブロックを実施するためのメモ書きです。
参考サイト:Terraformのimportコマンドとimportブロックを試してみた
importブロックとは
Terraform v1.5.0 でリリースされた機能です。
importコマンドではリソースの定義はtfstateファイル上にしか生成されず、tfファイルは手書きで実装する必要がありました。
しかし、importブロックを使用することでtfファイル上にリソース定義を自動生成することが可能となりました。
やり方
EC2のimportを例に方法を記載します。
まず、import.tfファイルを作成し、次のようにimportブロックを作成(記載)します。
import {
id = "i-052562f6eee9d60d9"
to = aws_instance.test01
}
「id」と「to」は必須パラメータです。
「id」:[リソースID]
「to」:[resourceブロックのtype].[resourceブロックのname]
importブロックの書き方については、各リソースのマニュアル下部に記載されています。
以下はEC2のマニュアルです。
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#import
importブロックの記載が終わったらimport.tfのあるディレクトリで次のコマンドを実行します。
main.tfとなっているところは、実装内容が出力されるファイル名となります。任意の名前を指定可能です。
terraform plan -generate-config-out=main.tf
実行が終わると同ディレクトリにmain.tf(もしくは任意のファイル名のファイル)が作成され、実装済みのリソースがコードがされて出力されます。
resource "aws_instance" "putter_mongo01_v2" {
ami = "ami-1234567aaa0fefee"
associate_public_ip_address = false
・・・・・・・・
}
}
import.tfファイルはもう不要なので削除してしまって問題ありません。
コードが確認できたらterraform applyコマンドを実行します。
そうするとtfstateファイルにリソース定義が生成されます。
terraform apply