はじめに
udemyを使ってTerraformの勉強をしたので、tfstateファイルの操作方法についての学習備忘録です。
作成済み環境のリソース一覧を確認
下記のコマンドで、作成済みのリソース一覧を確認することができます。
$ terraform state list
リソース詳細の確認
下記のコマンドで、作成済みの リソース詳細を確認することができます。
$ terraform state show <詳細情報を確認したいリソース名>
リソース名の変更
コードのみを変更すると、tfstateファイルと差分が生じるため、tfstateファイルを変更してから、コードの変更をします。
リソース名の変更方法
最初に、tfstateファイルを変更する。
$ terraform state mv <移動元リソース名> <移動先リソース名>
最後にコードを修正し、planで確認します。
$ terraform plan # 差分がでなければOK
リソースの取り込み
手動で作成したリソースをterraformで管理したいときに
$ terraform import <取り込み先のリソース名> <取り込みたい稼働中のリソースID>
します。
# リソースの取り込み方法
最初に、空のresourceブロックを作成します。
resource "aws_instance" "test" {
}
インポートコマンドを実行します
$ terraform import aws_instance.test <手動で作成したEC2のID>
tfstateファイルに詳細が記入されたので、内容を確認します。
$ terraform state show aws_instance.test
aws_instanceの必須項目に、確認した内容を記入して、完了です。
resource "aws_instance" "test" {
ami = ""
instance_type = ""
}
tfstateからリソースを削除
コードのみを変更すると、tfstateファイルと差分が生じるため、tfstateファイルを変更してから、コードの変更します。
tfstateからリソースを削除方法
最初にソースコードから、tfstateの管理から対象外にしたいリソースを削除します。
次に、コマンドでtfstateからリソースを削除します
$ terraform state rm <管理対象外にしたいリソース名>
最後に、planで確認します。
$ terraform plan # 差分がでなければOK
現状の反映
実際のクラウド上の状態をtfstatファイルへ反映します
terraformで監理しているリソースを手動で変更してしまった時などに、コードの状態に戻す方法です。
現状の反映方法
コマンドで実際のクラウド上の状態をtfstatファイルへ反映させます。
$ terraform refresh
コードの状態に戻します
$ terraform plan # 手動で操作した箇所が差分で表示されます
$ terraform apply