13
6

More than 1 year has passed since last update.

【Terraform】tfstateファイルの操作方法

Posted at

はじめに

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
13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6