2024.05.08  

【Terraform】 importブロックで構築済のawsリソースをコード化する

Terraform    

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
コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信