Тип управляемого ресурса 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.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.9/language/resources/tf-data/