どうも,エンジニアのナカノです.
少し前までは春うららな感じでしたが,最近は雨の日が多くなってきましたね.
また,もう少ししたら梅雨の時期に入るため,若干気が滅入ります.
歩きづらかったり,洗濯物を外に干し難いですし,癖っ毛なので髪型がヤバくなります.
一方で,晴れの日は暑すぎて体力が奪われそうです.これでは夏の来訪に恐々とします.
さて,今回も前回の記事の内容の続きとなります.
前回は場合によって役立つ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
というオプションを使う必要があります.
mv
このコマンドを使うと,下記の様なことを行うことが出来ます:
- Terraformによる管理の対象リソースの設定名を変更する.
- リソース設定をモジュール設定へ移行する.
- モジュール設定を別のモジュール設定へ移行する.
- モジュール設定を別の
terraform.tfstate
へ移行する.
これらは,あくまでterraform .tfstate
のリファクタリングに関するものです.
そのため,モジュールやリソースなどの設定ファイルの修正は別途行う必要があります.
pull
これを実行すると,以下の様な挙動を起こします:
terraform.tfstate
がリモートで管理されている:リモートのterraform.tfstate
の内容をターミナル上にアウトプットする.terraform.tfstate
がローカルで管理されている:ローカルのterraform.tfstate
の内容をターミナル上にアウトプットする.
このコマンドは,特にリモートで管理されているterraform.tfstate
に対して効果を発揮するかもしれません.
しかし,S3のバックエンド設定を使っている方にとってはあまり使われることのないコマンドかもしれません.
push
先ほどのコマンドに対して,このコマンドはローカルのterraform.tfstate
をリモートにアップロードするのに使われます.
こちらも,S3のバックエンド設定を使っている方にとってはあまり使われることのないコマンドかもしれません.
rm
これを使うと,Terraformの管理対象外にしたいリソースやモジュールをterraform.tfstate
から除外させることが出来ます.
あくまでTerraformの管理対象に関するコマンドですので,これを実行したからといってリソースの実態が削除されるわけではありません.
このコマンドは,場面によっては使いどころがあるかもしれません.知っておいてもよさそうなものかと思います.
show
これを用いると,リソースやモジュールの設定の詳細を見ることが出来ます.
コマンド実行の結果を考えると,これはterraform show
のコマンドと類似しています.
force-unlock
このコマンドの紹介の前に,まずterraform.tfstate
のロックについて説明します.
Terraformを複数人で利用したい場合ですが,大体はterraform.state
をリモートで保管します.
保管の点ではこれはよいのですが,複数人による同時のapply
の実行を考えると恐ろしいですよね.
ロックとはこのコマンドの同時実行を防いでくれるものです.バックエンド設定でロックの設定を追記することが出来ます.
さて,force-unlock
についてですが,このコマンドを実行するとロックが無効になります.
これの使いどころですが,apply
などを強制終了させてしまいロックが有効になっている場合に役に立ちます.
最後に
今回はterraform.tfstate
の管理/運用コマンド (1)を紹介させて頂きました.
どれも,チームでTerraformを利用する場合に威力を発揮する様なものばかりです.
そのため,個人でTerraformを使う場合ではコマンドの良さを感じ難いかも知れません.
しかし,知っておいて損はないものばかりですので,この際に覚えて頂けると幸いです.
次回は,terraform.tfstate
の管理/運用コマンド (2)を紹介致します.
それでは,今回はこの辺りで筆を置かせて頂きます.
次回に乞うご期待下さい.