目次
Terraform - 現在のAWS構成をtfstateに反映するには?
既存のAWSのリソースをTerraformの管理下に置くことは可能です。これは通常、terraform import
コマンドを使用して行われます。
terraform import
を使用することで、既存のインフラストラクチャリソースをTerraformの状態ファイル(tfstate)にインポートすることができます。
ただし、注意点がいくつかあります:
1. **事前準備**:
terraform import
を実行する前に、対応するTerraformリソースのコードがHCL (HashiCorp Configuration Language) で定義されている必要があります。
このHCLのリソース定義は、インポートしたいAWSリソースのプロパティと一致している必要はありませんが、リソース自体の定義は必要です。
2. **手動設定**:
インポートした後、HCLのリソース定義を手動で既存のAWSリソースの設定に合わせて調整する必要があります。
これは、terraform import
がAWSリソースの全ての属性や設定を自動的にTerraformコードに反映しないためです。
例:
既存のAWS S3バケットをTerraformの管理下に置きたい場合、まずバケットに対応するTerraformリソースを定義します:
resource "aws_s3_bucket" "my_bucket" { # この部分は後で実際のバケットの設定に合わせて調整する }
次に、terraform import
コマンドを使用して、このS3バケットをTerraformの状態ファイルにインポートします:
terraform import aws_s3_bucket.my_bucket my-existing-bucket-name
最後に、Terraformの定義を既存のS3バケットの実際の設定に合わせて更新します。
3. **複雑なリソース**:
一部のAWSリソースは複数の部分やサブリソースを持っている場合があり、これらを全て手動でインポートするのは非常に手間がかかることがあります。
4. **ツールの利用**:
terraformer
のようなサードパーティツールを使用すると、
AWSのリソースを自動的にTerraformコードとして抽出し、インポートするプロセスを効率化することができます。
注意: インポートする前に、既存の環境とTerraformの定義をバックアップして、変更の影響を完全に理解していることを確認してください。