Terraform null_resource

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。
本文缩写(英文全称与中文含义)
缩写 英文全称/名称 中文含义
ID Identifier 标识符

用途#

Null provider 的 null_resource 不创建真实基础设施,常见于旧项目,用于承载 provisioner。Terraform 1.4+ 的新配置通常优先使用 terraform_data。

示例#

运行环境需要 Bash;修改 revision 会替换资源并重新执行命令。

terraform {
  required_providers {
    null = {
      source  = "hashicorp/null"
      version = "~> 3.0"
    }
  }
}

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

resource "null_resource" "release" {
  triggers = {
    revision = var.revision
  }

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

与 terraform_data 对照#

项目 null_resource terraform_data
Provider 安装 hashicorp/null 内置,无需下载
替换触发参数 triggers,字符串 map triggers_replace,支持任意值类型
保存业务数据 通常借用 triggers,变化就替换 input / output,可单独更新

注意事项#

  • triggers 变化会替换资源;命令文本变化本身不会触发重跑。
  • 不使用 timestamp() 强制每次运行;以版本号、脚本哈希或资源 ID 表达触发条件。
  • Terraform 不追踪脚本造成的外部变化,销毁此资源也不会自动撤销脚本操作。
  • 现有资源迁移不能只改类型名称;需结合 Terraform 版本处理 state,并检查 plan 是否会再次执行命令。

参考#

搜索文档

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

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