terraform-importの使い方

terraform importは、既存のクラウドリソースをTerraformの管理下に持ってくるためのコマンドです。実際のリソースとTerraformの設定ファイル (*.tf)、および状態ファイル (tfstate) との間に連携を作成します。

以下はterraform importの基本的な使用方法です:

1. **リソースの定義**: まず、既存のリソースに対応するリソースをTerraformの設定ファイルに定義します。このステップは、terraform importコマンドを実行する前に行う必要があります。

例:AWSのS3バケットをインポートする場合のリソースの定義

resource "aws_s3_bucket" "example" {
# (設定の詳細はここに)
}

2. **terraform importの実行**: 実際のリソースをTerraformの管理下にインポートします。

例:特定のS3バケットをインポートする場合

terraform import aws_s3_bucket.example my-existing-s3-bucket-name

このコマンドは、aws_s3_bucket.exampleというTerraformリソースと、実際のmy-existing-s3-bucket-nameというS3バケットとの間に関連付けを作成します。

3. **terraform planの実行**: インポートが成功した後、terraform planを実行して、現在のリソースの状態とTerraformの設定ファイルとの間に差異がないかを確認します。

注意点:

- 全てのTerraformプロバイダーがimport機能をサポートしているわけではありません。サポートしているプロバイダーであっても、全てのリソースタイプがインポートをサポートしているとは限りません。公式ドキュメントやプロバイダーのリファレンスを確認して、特定のリソースタイプがインポートをサポートしているかどうかを確認してください。
- terraform importはリソースの実際の設定を*.tfファイルに自動的に取り込みません。インポート後にリソースの設定を手動で更新する必要があります。

この手順を適切に実行することで、既存のクラウドリソースをTerraformの管理下に移行することができます。

 

TerraForm importコマンドを実行するとtfファイルを作成して、ソースコードを書いてくれるのですか?

いいえ、terraform importコマンドは*.tfファイルを自動的に生成または変更しません。このコマンドは、既存のリソースをTerraformの状態ファイル (tfstate) にのみ追加します。

terraform importの主な流れは以下のようになります:

1. **リソースの事前定義**: terraform importを実行する前に、対応するリソースを手動でTerraformの設定ファイル (*.tf) に定義する必要があります。

2. **terraform importの実行**: コマンドを実行すると、実際のリソースと*.tfファイル内のリソース定義をtfstateファイル内で関連付けます。

3. **設定の調整**: インポートした後、*.tfファイル内のリソース定義を手動で更新して、実際のリソースの設定と一致させる必要があります。

terraform importは、既存のクラウドリソースをTerraformの管理下に移行する際のブリッジとして機能しますが、実際のソースコードの生成や変更は行わないため、設定ファイルの管理や更新は手動で行う必要があります。

 

本来書くべきソースコードを*.tfファイルに書いて、terraform importコマンドを実行するということですか?

はい、正確にはそのとおりです。

terraform importを使用する際のステップは以下の通りです:

1. **リソースの事前定義**:
対象となるリソースを手動でTerraform設定ファイル (*.tf) に定義します。このステップでは、リソースの詳細な設定や属性は完全に一致している必要はありませんが、リソースのタイプと名前(Terraform内での識別子)を定義する必要があります。

例えば、AWS S3バケットをインポートする場合:

resource "aws_s3_bucket" "example" {
# 必要に応じて設定を追加
}

2. **terraform importの実行**:
次に、terraform importコマンドを使用して、Terraform設定ファイルで定義したリソースと実際のクラウドリソースを関連付けます。

AWS S3バケットの例では:

terraform import aws_s3_bucket.example existing-s3-bucket-name

このコマンドは、aws_s3_bucket.exampleというTerraformリソースと、existing-s3-bucket-nameという実際のS3バケットをtfstateファイル内で関連付けます。

3. **設定の調整**:
インポートが完了した後、*.tfファイル内のリソース定義を、実際のリソースの設定や属性と一致するように手動で更新します。このステップは、tfstateと実際のリソースの間の差異を最小化するために必要です。

この手順により、既存のクラウドリソースをTerraformの管理下に移行できます。

 

記事タイトル検索