在 Terraform 外部更新由 Terraform 管理的 Azure 資源
雖有資料遺失的風險而不建議您在 Terraform 外部修改由 Terraform 管理的資源,但某些功能會要求您這麼做。 由於風險的關係,您必須使用概述的步驟來正確更新資源。
由 Terraform 管理的資源會將其狀態儲存在位於 Terraform Cloud 或本機 Terraform 模組中的 terraform.tfstate
。 狀態包含遠端資源與 Terraform 相關的所有屬性。 由 Terraform 管理的資源透過 Terraform 外部修改時,Terraform 狀態與遠端資源的屬性不符。 為了解決不相符的問題,Terraform 可能會終結並重新建立遠端資源,而導致資料遺失。
使用生命週期保護由 Terraform 管理的資源
為了避免任何包含動態資源的 Azure 資源遺失資料,您應該在 Terraform 組態檔中使用prevent_destroy
生命週期引數。 例如:
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 輸出。