Terraform の lock とは
Terraform では、状態ファイル(state)は単一の真実の源泉であり、複数ユーザーが同時に変更すると破損や意図しない差分が発生する可能性があります。
これを防ぐために用意されている仕組みが lock(ロック) です。
lock が取得されている間は、変更系の操作がブロックされ、同時 Apply を防止することで安全性を担保します。
以下では、HCP Terraform(Terraform Cloud)の画面を例に、ロックの動きを簡単に説明します。
ロックの動作
1. ユーザー A がロックを取得する
Apply など state を更新する操作を開始すると、Workspace にロックが設定されます。
この間、別ユーザーは state を変更できません。
2. 別ユーザーの Apply はロック解除まで待機する
他のユーザーが Apply(または Destroy)を実行すると、ロック解放まで待機状態 (Plan pending) になります。
ポイントとして、
- Apply / Destroy → ロック待ち
- Plan only → state を書き換えないため、待機せず実行可能
という挙動になります。
3. Workspace の Admin 権限があれば強制解除できる
操作が中断されてロックが残ったままになるケースでは、Workspace の Admin 権限を持つユーザーがロックを強制的に解除できます。
強制解除すると、他のユーザーはすぐに変更系の操作を再開できます。
まとめ
- lock は state の競合を防ぐための安全装置
- Apply / Destroy はロック中に実行できず待機する
- Plan only は待機しない
- Admin 権限があればロックを強制解除できる
Terraform のロック挙動を理解しておくことで、チーム利用時のトラブルを避けやすくなります。


