- OpenTofu言語
- リソース
- プロビジョナー
- リソースを持たないプロビジョナー
リソースを持たないプロビジョナー
特定のリソースに直接関連付けられていないプロビジョナーを実行する必要がある場合は、`terraform_data`に関連付けることができます。
terraform_data
のインスタンスは通常の資源として扱われますが、何も実行しません。他のリソースタイプと同様に、プロビジョナーと接続の詳細を`terraform_data`リソースに設定できます。また、`input`引数、`triggers_replace`引数、および任意のメタ引数を使用して、依存関係グラフ内のプロビジョナーの実行場所を正確に制御することもできます。
重要
プロビジョナーは最終手段として使用してください。ほとんどの場合、より良い代替手段があります。プロビジョナーの宣言で詳細を参照してください。
使用例
resource "aws_instance" "cluster" {
count = 3
# ...
}
resource "terraform_data" "cluster" {
# Replacement of any instance of the cluster requires re-provisioning
triggers_replace = aws_instance.cluster.[*].id
# Bootstrap script can run on any instance of the cluster
# So we just choose the first in this case
connection {
host = aws_instance.cluster.[0].public_ip
}
provisioner "remote-exec" {
# Bootstrap script called with private_ip of each node in the cluster
inline = [
"bootstrap-cluster.sh ${join(" ", aws_instance.cluster.*.private_ip)}",
]
}
}