OpenTofu v1.11.0 現已發佈,一些更新亮點如下:
臨時資源和只寫屬性
臨時值允許 OpenTofu 處理只在單個 OpenTofu 階段內存在於內存中的數據和資源,保證這些值不會被保存在狀態快照或計劃文件中:
-
使用臨時資源,可以臨時訪問存儲的憑證或網絡隧道,用於 provider 或 provisioner 配置,且這些值不會被保存到 OpenTofu 的計劃文件或狀態快照中。
舉例來説,你可以用臨時資源從 OpenBao 請求限時的 AWS 憑證,提供給 hashicorp/aws provider,或者打開臨時 SSH 隧道,讓 cyrilgdn/postgresql provider 訪問遠程網絡上的 Postgres 服務器。
-
使用只寫屬性設置資源參數,這些參數只在變更時需要被 OpenTofu 訪問,比如數據庫的初始管理員密碼。
例如,你可以用臨時資源生成 SSH 密鑰對,然後通過只寫屬性把私鑰保存到你的秘密存儲中,這樣 OpenTofu 本身就不需要保留密鑰副本。
資源和模塊的 enabled 支持
OpenTofu 傳統上允許通過 count 元參數動態啓用或禁用某個模塊,選擇實例數為零或一。
OpenTofu v1.11.0 引入了 enabled 元參數,希望讓讀者更容易理解資源實例數只能是零或一:
variable "subnet" {
type = object({
id = string
})
default = null
}
variable "enable_cluster" {
type = bool
default = false
}
resource "aws_subnet" "example" {
# ...
lifecycle {
enabled = var.subnet == null
}
}
resource "aws_instance" "example" {
# ...
subnet_id = var.subnet != null ? var.subnet.id : aws_subnet.example.id
# ...
}
module "servers" {
source = "./app-cluster"
servers = 5
lifecycle {
enabled = var.enable_cluster
}
}
更多詳情可查看:https://opentofu.org/blog/opentofu-1-11-0/