Terraform terraform_data

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。

用途#

Terraform 1.4+ 内置资源,用于保存输入、承载 provisioner,或把普通值的变化接入资源生命周期。无需配置 required_providers。

参数 / 属性 行为
input 保存输入,变化时更新资源
output apply 后对应的输入值
triggers_replace 值变化时替换资源
id 资源实例的唯一标识

示例#

运行环境需要 Bash。修改说明只更新数据;修改版本则替换资源并执行命令。

terraform {
  required_version = ">= 1.4.0"
}

variable "revision" {
  type    = string
  default = "v1"
}

variable "release_note" {
  type    = string
  default = "Initial release"
}

resource "terraform_data" "release" {
  input = {
    note = var.release_note
  }
  triggers_replace = [var.revision]

  provisioner "local-exec" {
    interpreter = ["bash", "-c"]
    command     = "printf 'Release: %s\n' \"$REVISION\""
    environment = {
      REVISION = var.revision
    }
  }
}

output "release_note" {
  value = terraform_data.release.output.note
}

保存为 main.tf 后执行 terraform init、terraform plan,审查后 terraform apply。

注意事项#

  • 仅 input 变化不会重新执行创建阶段的 provisioner;需要重跑时使用 triggers_replace。
  • depends_on 只建立依赖,不代表上游变化时自动替换当前资源。
  • replace_triggered_by 需要资源引用;普通变量可先放入一个 terraform_data.input,再由目标资源引用该资源。
  • 该资源不管理脚本副作用,也不提供自动回滚;不要用它代替已有的 provider resource。

参考#

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭