综合 OpenTofu 1.11.0 发布:ephemeral 值与 enabled 元参数,机密不再落 state

2026-09-22 21:04:43

OpenTofu 1.11.0 发布:ephemeral 值与 enabled 元参数,机密不再落 state

OpenTofu 1.11.0 于 2025-12-09 发布。发布页:opentofu/opentofu v1.11.0,完整改动见 CHANGELOG。v1.11.x 系列支持到 2026-08-01。

Ephemeral Values 与 Write-Only Attributes

ephemeral 资源用于处理机密数据、临时凭证、瞬态基础设施,保证这些值不会被持久化到 state 快照或 plan 文件。可以声明输入变量和输出值为 ephemeral,并使用已支持 ephemeral 资源类型(如取密钥)或带 write-only 属性的托管资源类型(如设置密码但不写入 state)的 provider 插件。

ephemeral "aws_secretsmanager_random_password" "password" {}

resource "kubernetes_secret_v1" "credentials" {
  metadata { name = "admin"  namespace = "my-app" }
  data_wo = {
    username = "admin"
    password = ephemeral.aws_secretsmanager_random_password.password.random_password
  }
  data_wo_revision = 1
  type = "kubernetes.io/basic-auth"
}

enabled 元参数

资源或模块实例数量为 0 或 1 时,不必再写 count = var.create ? 1 : 0。初版形式嵌在 lifecycle 块内,避免与已有名为 enabled 的输入变量或资源参数冲突:

resource "aws_instance" "web" {
  ami = "ami-12345"
  instance_type = "t3.micro"
  lifecycle { enabled = var.create_instance }
}

需要注意,ephemeral 值在 lifecycle.enabled 中的使用有限制。

兼容性说明

  • macOS 需要 12 Monterey 或更高。
  • azurerm 后端:不再支持 endpointARM_ENDPOINT 配置项;不再支持 msi_endpointARM_MSI_ENDPOINTenvironmentmetadata_host 互斥。
  • issensitive() 在求值未知值时现在正确返回 unknown,依赖旧(错误)行为的代码需调整。
  • 测试 Mock:mock 值现在严格遵循 provider schema,无效 mock 值需修正。
  • S3 模块安装:使用 S3 源地址时 OpenTofu 使用与 AWS CLI/SDK 相同的凭证。
  • TLS/SSH:不再接受 SHA-1 签名;SSH 证书须符合 draft-miller-ssh-cert-03。
  • tofu apply 期间的 -var / -var-file:ephemeral 变量值无法保存进 plan,因此允许在 apply 时再次传入;该能力也允许用于非 ephemeral 变量,但如果与 plan 创建时的取值不同会报错。plan 与 apply 之间 TF_VAR 值需保持一致。

其他增强

  • mock_provider 支持 for_each
  • tofu show 支持 -config-module=DIR,配合 -json 可生成机器可读摘要,无需先生成 plan。
  • 新增 azure_vault 密钥提供者,用 Azure Key Vault 作为 state/plan 加密密钥来源。
  • azurerm 后端新增 use_cliuse_aks_workload_identityclient_id_file_pathclient_secret_file_pathclient_certificate 等配置。

1.10.0 背景

作为参照,1.10.0 已支持 OCI Registry 模块与 provider mirror;S3 后端可用 S3 条件写实现无 DynamoDB 锁;pg 后端支持单库多 state;提供 -target-file / -exclude-file;以及实验性 OpenTelemetry 追踪。

复制全文 生成海报 OpenTofu 基础设施即代码 Terraform 运维

推荐文章

程序员茄子在线接单