跳至主要内容

terraform_data 托管资源类型

terraform_data 实现标准的资源生命周期,但不直接执行任何其他操作。您可以使用 terraform_data 资源,而无需要求或配置提供程序。它始终通过内置提供程序以 源地址 terraform.io/builtin/terraform 提供。

terraform_data 资源可用于存储需要遵循托管资源生命周期的值,以及在没有其他逻辑托管资源可放置它们时触发配置器。

使用示例(replace_triggered_by 的数据)

replace_triggered_by 生命周期参数 要求所有给定的地址都属于资源,因为强制替换的决策是基于所有提到的资源的计划操作。

诸如 局部值输入变量 等纯数据值没有任何副作用可供计划,因此它们在 replace_triggered_by 中无效。您可以使用 terraform_data 在每次 input 更改时都计划操作的行为来间接使用纯值来触发替换。

代码块
variable "revision" {
default = 1
}

resource "terraform_data" "replacement" {
input = var.revision
}

# This resource has no convenient attribute which forces replacement,
# but can now be replaced by any change to the revision variable value.
resource "example_database" "test" {
lifecycle {
replace_triggered_by = [terraform_data.replacement]
}
}

使用示例(null_resource 替换)

代码块
resource "aws_instance" "web" {
# ...
}

resource "aws_instance" "database" {
# ...
}

# A use-case for terraform_data is as a do-nothing container
# for arbitrary actions taken by a provisioner.
resource "terraform_data" "bootstrap" {
triggers_replace = [
aws_instance.web.id,
aws_instance.database.id
]

provisioner "local-exec" {
command = "bootstrap-hosts.sh"
}
}

参数参考

支持以下参数

  • input - (可选)一个将在实例状态中存储的值,并在应用后反映在 output 属性中。

  • triggers_replace - (可选)一个存储在实例状态中的值,当值更改时将强制替换。

属性参考

除了以上内容外,还导出了以下属性

  • id - 资源实例的唯一字符串值。

  • output - 从 input 参数派生的计算值。在 output 未知的计划中,它仍将与 input 的类型相同。