Тип управляемого ресурса terraform_data
terraform_data реализует стандартный жизненный цикл ресурса, но не выполняет никаких других действий напрямую. Вы можете использовать ресурс terraform_data без необходимости подключать или настраивать провайдер. Он всегда доступен через встроенный провайдер с исходным адресом terraform.io/builtin/terraform.
Ресурс terraform_data полезен для хранения значений, которым необходимо следовать жизненному циклу управляемого ресурса, а также для запуска provisioner-ов, когда нет другого логичного управляемого ресурса, в котором их можно разместить.
Пример использования (данные для 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"
}
}Блок moved можно использовать для миграции с null_resource на ресурс terraform_data. Руководство по миграции
Справочник аргументов
Поддерживаются следующие аргументы:
-
input— (Необязательно) Значение, которое будет сохранено в состоянии экземпляра и отражено в атрибутеoutputпосле применения. -
triggers_replace— (Необязательно) Значение, которое сохраняется в состоянии экземпляра и при изменении приводит к принудительной замене.
Справочник атрибутов
Помимо перечисленного выше, экспортируются следующие атрибуты:
-
id— Строковое значение, уникальное для экземпляра ресурса. -
output— Вычисляемое значение, полученное из аргументаinput. Во время планирования, если значениеoutputнеизвестно, оно всё равно будет иметь тот же тип, что иinput.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.11/language/resources/tf-data/