目次
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の管理下に移行できます。