plan、apply、ドリフト検知、ロールバックは装飾的なステータスではなく、実際のインフラ状態に対して実際のTerraformとクラウドAPI呼び出しを実行します。
- planはコストとクレデンシャルの事前チェックを含め、デプロイ前に実際の変更を計算
- applyは実際にインフラをプロビジョニング — プログレスバーではない
- ドリフト検知は実際の状態と宣言された状態を継続的に比較
- 問題が起きた際、ロールバックは逆トポロジカル順序で以前の状態を復元
仕組み
planとapplyはキューイングされたワークフローステップとして実行される — init、plan、ポリシーゲート、そしてapply — 結果はライブでストリーミングされる。別のスケジューラーが実インフラと宣言された状態を定期的に比較し、ロールバックはバックエンドごと(S3、GCS、Azure RM、Terraform Cloud、HTTP、ローカル)に、逆トポロジカル順序で以前の状態を復元する。
ロールバックは逆トポロジカル順で実行される。これは、依存先が破棄される前に依存するリソースが破棄されないようにするためだ — そして各ステートバックエンド(S3、GCS、Azure RM、Terraform Cloud)は、すべて同じであるかのように振る舞う汎用コードパスではなく、それぞれ独自のロールバック実装を持つ。