雖然不建議您在 Terraform 外部修改受 Terraform 管理的資源,因為數據遺失的風險,但某些功能會要求您這麼做。 由於風險,您必須使用概述的步驟來正確更新資源。
由 Terraform 管理的資源會將其狀態儲存在位於 Terraform Cloud 或本機 Terraform 模組中的 terraform.tfstate。 狀態包含與 Terraform 相關的遠端資源的所有屬性。 當 Terraform 管理的資源在 Terraform 外部修改時,Terraform 狀態與遠端資源的屬性不符。 為了解決不相符的問題,Terraform 可能會刪除並重新建立遠端資源,從而導致資料遺失。
使用生命週期設定保護 Terraform 受控資源
若要防止任何包含動態資源的 Azure 資源遺失數據,您應該使用 prevent_destroy Terraform 組態檔中的生命週期自變數。 例如:
resource "azure_netapp_volume" "example {
lifecycle{
prevent_destroy = true
}
}
在 Terraform 外部修改 Terraform 管理的資源
下列指示是在 Terraform 外部更新受 Terraform 管理之資源所需步驟的高階概觀。
- 流覽至 Terraform 模組的組態檔。 組態檔的擴展名為
.tf或.tf.json。 - 在由 Terraform 管理的磁碟區組態檔 (
main.tf) 中,找出生命週期組態區塊。 使用ignore_changes = <property>修改 區塊,並指派您正在使用之功能的適當屬性值。 如果沒有生命週期組態區塊存在,請加以新增:lifecycle { ignore_changes = <property> } - 對 Azure NetApp Files 磁碟區進行所需的修改。
- 執行
terraform plan,以確認不會對您的磁碟區進行任何變更。 CLI 輸出應該會顯示:No changes. Your infrastructure matches the configuration.備註
terraform plan命令會使用遠端資源的變更來建立計劃檔案,讓您在套用任何變更之前,確保資源的安全性。 - 執行
terraform apply以套用變更。 您應該會看到與上一個步驟相同的 CLI 輸出。