会員登録すると
学習することができます。
会員登録する(無料)
学習することができます。
登録済みの方はこちら
ログイン
学ぶ目的
ドリフトとは
クラウドの管理画面などで、Terraform を通さずに実物を変えると、設定・state・実物の間にずれができます。これをドリフトと呼びます。plan は、実物の今の状態を読み直して(refresh)から差を出すので、ドリフトがあると「設定どおりに戻す変更」が plan に出ます。
-refresh-only
- terraform plan -refresh-only … 実物と state の差だけを確かめる
- terraform apply -refresh-only … 実物は変えずに、state だけを実物に合わせる
- 管理画面での変更を正としたいなら、設定のほうも同じ値に直す。直さないと、次の plan でまた元に戻す変更が出る
state を CLI で調べる
terraform state list で管理しているもののアドレスの一覧を、terraform state show にアドレスを付けて1つの詳細を見ます。terraform show は state 全体や、保存した plan のファイルを人が読める形で出します。state のファイルを手で書き換えてはいけません。
作り直させずに直す
- moved ブロック … from と to にアドレスを書く。名前を変えたり、モジュールへ移したりしても、作り直さずに済む。設定に残るのでチーム全員に効く
- terraform state mv … 同じことをコマンドで行う
- removed ブロック … 管理から外す。lifecycle の destroy = false なら実物は残る(既定は実物も削除)
- terraform state rm … state から外す。実物は残る
- -replace=アドレス … plan や apply に付けて、1つを作り直す。以前の taint の代わり
このレクチャーで学ぶこと
- ドリフトの意味と、plan での見え方
- -refresh-only で state だけを実物に合わせる方法
- state list・state show・show で state を調べる方法
- moved・removed・state mv・state rm・-replace の使い分け
質問
まだ質問は投稿されていません。
質問投稿
ログイン後に質問の投稿ができます。
#1
未完了
state をチームで共有する ― リモートバックエンドとロックで、同じ state を安全に使う
#2
未完了
ドリフトと state の操作 ― Terraform の外での変更を見つけ、名前の変更を作り直さずに反映する
#3
未完了
既存のインフラを取り込む ― import で管理下に入れ、TF_LOG で原因を調べる
#4
未完了
モジュール ― 構成を部品にして、取り寄せ先とバージョンを決めて使い回す
#5
未完了
式と関数 ― 複合型と for 式と組み込み関数で、くり返しの少ない設定を書く
#6
未完了
meta-argument と独自の条件 ― count・for_each・depends_on・lifecycle と検証を使い分ける
#7
未完了
HCP Terraform ― ワークスペースとプロジェクト、実行の流れとガバナンスを説明する
#8
未完了