Тип управляемого ресурса 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"
}
}Блок 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.10/language/resources/tf-data/