State Storage and Locking

State 是 Terraform 最重要的資訊,如果沒有保存好,那麼 IaC 就有可能大亂。

Terraform 本身需要 state 來判斷 Resource 的現況,若是 state 不存在,Terraform 將不認得既有存在的服務,如果在沒有 state 的情況下,Terraform 會以 New Resource 的方式新建資源。

State Storage

當執行 planapply 時 Terraform 會去參考 state 的資訊,以 terraform.tfstate 命名檔案。

預設 state 儲存在 local,為了避免遺失或多人開發,一般會透過 backends 儲存。

State Locking

當多人開發時,為了避免在同一時間重複執行 apply 的 lock 機制,lock 的方法與使用的 backends 有關係,以 Backend S3 為例,Lock 則採用 DynamoDB