Terraform applyコース / Chapter 01

本番applyを安全に始め、閉じる

環境確認からstate・lock・planを経て、フルplanのNo changesとコスト確認までを、本番applyの一連の仕事として扱う。

TL;DR

  1. prdのアカウント・認証・リージョンとbackendを確認してから初期化する。
  2. stateは共有物。plan/apply中のロックを尊重する。
  3. 最後はフルplanのNo changesとコスト確認で閉じる。

01まず、どの本番環境に触れるかを確定する

アカウント・認証・リージョン・backendがそろって、初めてinitに進める。

prd環境の確認からstateロック、planとapply、No changesとコスト確認までを順に示す図
本番applyは、リソースを作る操作だけでなく、環境確認と完了確認を含む。

最初にprdアカウント、利用する認証情報、リージョン、S3などのbackendを確認する。Terraformを実行するIAMユーザーは鶏と卵になるため、Terraformの外で事前に用意する。

入口: terraform init は、この環境のbackendとproviderを初期化する。別環境の認証情報やstateを使ったまま進めない。

02state・lock・planで変更を共有する

stateは実環境との対応表、lockは同じstateへの同時変更を防ぐ仕組み。

planやapplyの開始時、Terraformはstateをロックして競合を防ぐ。ロックエラーが出ても、他の作業者が動いていないと確認できるまでforce-unlockしない。

順序確認すること
1. initprd用のbackendとproviderを初期化する
2. plan対象、追加・変更・削除、コスト影響を読む
3. apply説明できるplanだけを適用する

部分applyは依存関係の確認を省略しやすい。必要な場合でも、作業の終わりを部分applyの成功だけで判定しない。

03No changesとコスト確認で閉じる

宣言コード・state・実環境がそろい、不要なコストを把握できる状態を完了にする。

変更後は-targetなしのフルterraform planを実行し、No changesを確認する。これで部分的な操作を含めても、宣言コードとstateがそろっているかを確かめられる。

構築しただけでは終わりではない。コストは合計だけでなくリソース単位で見て、不要な稼働を止める判断まで残す。

この章で持ち帰ること

  1. 正しいprd環境とbackendを確認してからinitする。
  2. 共有stateとlockを尊重し、planを説明してからapplyする。
  3. 最後はフルplanのNo changesとコスト確認で閉じる。