地形保障措施

地形保障措施

我已經有數十個 AWS 實例在生產環境中運行,我想開始使用 Terraform 來自動建立下一個實例。我讀到 Terraform 可以幫助練習不可變模式。但是我想避免任何破壞任何已經運行的實例的風險。 Terraform 是否提供任何保護來避免這種情況?

答案1

是的 - 使用terraform plan在進行任何操作之前。它將輸出將要進行的更改的完整列表,但實際上並沒有執行其中任何一個,供您審查。

答案2

Terraform 對此沒有明確的保護措施,但其整體設計已阻止它接觸現有資源。

通常,每個 Terraform 資源都有一些主要識別碼(例如,對於 EC2 來說是實例 ID,對於 S3 來說是儲存桶名稱)。每次 Terraform 運行應該只 a) 建立新資源或 b) 更新/刪除 Terraform 控制下的現有資源。

  • 在 a) 情況下,如果 ID 已經存在,則會出現錯誤,且 Terraform 無法建立任何內容(對於 EC2 永遠不會發生,但對於 S3 儲存桶則可能發生)。這是修復 Terraform 程式碼的機會。

  • b) Terraform 應該只使用「自己的」資源,而不影響您帳戶的現有內容。

人們可以透過替換/重新命名其資源來有意(或無意)幹擾 Terraform,這會破壞事物;但在“正常”使用中我從未見過此類問題。

答案3

您可以為資源新增生命週期配置區塊(請參閱 Terraform 資源配置);具體透過使用:

lifecycle {
    prevent_destroy = true
}

當計劃包含對資源的銷毀操作時,這將傳回錯誤訊息。

相關內容