- OpenTofu 语言
- 资源
- terraform_data 托管资源类型
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
的类型相同。