Goalist Developers Blog

IaC by Terraform ~DAY4: Terraform Commands (3)~

どうも,エンジニアのナカノです.

少し前までは春うららな感じでしたが,最近は雨の日が多くなってきましたね.

また,もう少ししたら梅雨の時期に入るため,若干気が滅入ります.

歩きづらかったり,洗濯物を外に干し難いですし,癖っ毛なので髪型がヤバくなります.

一方で,晴れの日は暑すぎて体力が奪われそうです.これでは夏の来訪に恐々とします.

さて,今回も前回の記事の内容の続きとなります.

前回は場合によって役立つTerraformのコマンドに関する内容でした.

今回の内容は,terraform.tfstateの管理/運用コマンド (1)に関してです.

目 次
  • `terraform.tfstate`の管理/運用コマンド (1)
    • state
      • list
      • mv
      • pull
      • push
      • rm
      • show
    • force-unlock
  • 最後に

terraform.tfstateの管理コマンド (1)

state

このコマンドは,terraform.tfstateファイルを管理/運用するためのものです.

直接な修正という手もありますが,このコマンドを使った方が遥かに安全です.

サブコマンドとしてlist, mv, pull, push, rm, showがあります.

以下では,これらのサブコマンドの機能についてご紹介致します.

  

list

terraform.tfstateの内容をリストアップしたい時は,このlistを使うとよいでしょう.

特に指定なしでコマンドを実行すると,下記の様な挙動を起こします:

  • バックエンド設定を利用していない:ローカルにあるterraform.tfstateの内容をリストアップする.
  • バックエンド設定を利用している:リモートに保管されているterraform.tfstateの内容をリストアップする.

前者ですが,terraform.tfstateの場所がデフォルトではない場合は-state=pathというオプションを使う必要があります.

www.terraform.io

  

mv

このコマンドを使うと,下記の様なことを行うことが出来ます:

  • Terraformによる管理の対象リソースの設定名を変更する.
  • リソース設定をモジュール設定へ移行する.
  • モジュール設定を別のモジュール設定へ移行する.
  • モジュール設定を別のterraform.tfstateへ移行する.

これらは,あくまでterraform .tfstateのリファクタリングに関するものです.

そのため,モジュールやリソースなどの設定ファイルの修正は別途行う必要があります.

www.terraform.io

  

pull

これを実行すると,以下の様な挙動を起こします:

  • terraform.tfstateがリモートで管理されている:リモートのterraform.tfstateの内容をターミナル上にアウトプットする.
  • terraform.tfstateがローカルで管理されている:ローカルのterraform.tfstateの内容をターミナル上にアウトプットする.

このコマンドは,特にリモートで管理されているterraform.tfstateに対して効果を発揮するかもしれません.

しかし,S3のバックエンド設定を使っている方にとってはあまり使われることのないコマンドかもしれません.

www.terraform.io

  

push

先ほどのコマンドに対して,このコマンドはローカルのterraform.tfstateをリモートにアップロードするのに使われます.

こちらも,S3のバックエンド設定を使っている方にとってはあまり使われることのないコマンドかもしれません.

www.terraform.io

  

rm

これを使うと,Terraformの管理対象外にしたいリソースやモジュールをterraform.tfstateから除外させることが出来ます.

あくまでTerraformの管理対象に関するコマンドですので,これを実行したからといってリソースの実態が削除されるわけではありません.

このコマンドは,場面によっては使いどころがあるかもしれません.知っておいてもよさそうなものかと思います.

www.terraform.io

  

show

これを用いると,リソースやモジュールの設定の詳細を見ることが出来ます.

コマンド実行の結果を考えると,これはterraform showのコマンドと類似しています.

www.terraform.io

  

force-unlock

このコマンドの紹介の前に,まずterraform.tfstateロックについて説明します.

Terraformを複数人で利用したい場合ですが,大体はterraform.stateをリモートで保管します.

保管の点ではこれはよいのですが,複数人による同時のapplyの実行を考えると恐ろしいですよね.

ロックとはこのコマンドの同時実行を防いでくれるものです.バックエンド設定でロックの設定を追記することが出来ます.

さて,force-unlockについてですが,このコマンドを実行するとロックが無効になります.

これの使いどころですが,applyなどを強制終了させてしまいロックが有効になっている場合に役に立ちます.

www.terraform.io

  

最後に

今回はterraform.tfstateの管理/運用コマンド (1)を紹介させて頂きました.

どれも,チームでTerraformを利用する場合に威力を発揮する様なものばかりです.

そのため,個人でTerraformを使う場合ではコマンドの良さを感じ難いかも知れません.

しかし,知っておいて損はないものばかりですので,この際に覚えて頂けると幸いです.

次回は,terraform.tfstateの管理/運用コマンド (2)を紹介致します.

それでは,今回はこの辺りで筆を置かせて頂きます.

次回に乞うご期待下さい.