- OpenTofu言語
- リソース
- terraform_data マネージドリソースタイプ
terraform_data
マネージドリソースタイプ
terraform_data
は標準的なリソースライフサイクルを実装しますが、直接的なアクションは行いません。プロバイダーを必要とせず、設定しなくても terraform_data
リソースを使用できます。これは ソースアドレス terraform.io/builtin/terraform
を持つ組み込みプロバイダーを通じて常に利用可能です。
terraform_data
リソースは、マネージドリソースライフサイクルに従う必要のある値を格納したり、他に論理的なマネージドリソースがない場合にプロビジョナーをトリガーしたりするのに役立ちます。
使用例 (replace_triggered_by
のためのデータ)
replace_triggered_by
ライフサイクル引数では、強制的な置換の決定が記載されている全てのリソースの計画されたアクションに基づいているため、与えられた全てのアドレスがリソースのものである必要があります。
ローカル値や入力変数のようなプレーンなデータ値には、計画対象となる副作用がないため、replace_triggered_by
では無効です。input
が変更されるたびにアクションを計画するという terraform_data
の動作を利用して、プレーンな値を間接的に使用して置換をトリガーできます。
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
と同じ型になります。