本番applyを安全に始め、閉じる
環境確認からstate・lock・planを経て、フルplanのNo changesとコスト確認までを、本番applyの一連の仕事として扱う。
TL;DR
- prdのアカウント・認証・リージョンとbackendを確認してから初期化する。
- stateは共有物。plan/apply中のロックを尊重する。
- 最後はフルplanの
No changesとコスト確認で閉じる。
01まず、どの本番環境に触れるかを確定する
アカウント・認証・リージョン・backendがそろって、初めてinitに進める。

最初にprdアカウント、利用する認証情報、リージョン、S3などのbackendを確認する。Terraformを実行するIAMユーザーは鶏と卵になるため、Terraformの外で事前に用意する。
入口: terraform init は、この環境のbackendとproviderを初期化する。別環境の認証情報やstateを使ったまま進めない。
02state・lock・planで変更を共有する
stateは実環境との対応表、lockは同じstateへの同時変更を防ぐ仕組み。
planやapplyの開始時、Terraformはstateをロックして競合を防ぐ。ロックエラーが出ても、他の作業者が動いていないと確認できるまでforce-unlockしない。
| 順序 | 確認すること |
|---|---|
| 1. init | prd用のbackendとproviderを初期化する |
| 2. plan | 対象、追加・変更・削除、コスト影響を読む |
| 3. apply | 説明できるplanだけを適用する |
部分applyは依存関係の確認を省略しやすい。必要な場合でも、作業の終わりを部分applyの成功だけで判定しない。
03No changesとコスト確認で閉じる
宣言コード・state・実環境がそろい、不要なコストを把握できる状態を完了にする。
変更後は-targetなしのフルterraform planを実行し、No changesを確認する。これで部分的な操作を含めても、宣言コードとstateがそろっているかを確かめられる。
構築しただけでは終わりではない。コストは合計だけでなくリソース単位で見て、不要な稼働を止める判断まで残す。
この章で持ち帰ること
- 正しいprd環境とbackendを確認してからinitする。
- 共有stateとlockを尊重し、planを説明してからapplyする。
- 最後はフルplanのNo changesとコスト確認で閉じる。