お疲れ様です!福島です。
月曜日から雨で気分が下がりますが今週も頑張っていきましょう。
さて、今回はTerraformで既存リソース名の変更方法について書いていきます。
■tfstateファイル
Terraformにはtfstateファイルなるものが存在します。
tfstateファイルにはTerraform が
管理しているインフラストラクチャの現在の状態を記録されておりTerraform が管理しているすべてのリソース(AWS EC2 インスタンス、VPC、サブネットなど)の状態情報が含まれています。
書かれているコードの情報と、このtfstateファイルの情報に差異があると予期せぬ事態が起きる可能性があります。
例)
①インスタンスのリソース名を変更したい
②コードだけ変更
③apply
上記のような例だと元々のインスタンスは消されて新たなインスタンスが作られてしまいます。
■リソース情報の移動
指定されたリソース詳細を移動
terraform state mv <移動元リソース名> <移動先リソース名>
■リソース名の変更
1.EC2インスタンスのリソース名を変更
・変更前:aws_instance.app_server
・aws_instance.app_server2に変更
・コードの中身もaws_instance.app_server2に変更
2.terrform planでtfstateが変更されていることを確認
→no changeとなっていることからコードとtfstateファイルに差がない事が分かる