■ はじめに
https://dk521123.hatenablog.com/entry/2023/05/23/002314
などで使う機会があった Terraform の null_resource について ちゃんと理解する 勉強中に、terraform_data ってのも知ったので、それもメモ。
目次
【1】null_resource 1)用途 2)構文 3)使用例 【2】terraform_data 1)用途
【1】null_resource
* 何もしないresource => 他のresourceができあがったことをトリガーとして、 プロビジョニング(必要なものを準備すること)を行うことができる
https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource
1)用途
* 他のリソースの状態変化に合わせてコマンドを実行する
2)構文
resource "null_resource" "cluster" { # トリガーとなる条件を指定 # 指定したリソースが変更されると、null_resource 内の provisioner の処理が実行される # Changes to any instance of the cluster requires re-provisioning triggers = { cluster_instance_ids = join(",", 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 = element(aws_instance.cluster[*].public_ip, 0) } # 実行したいコマンドを定義 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)}", ] } }
3)使用例
https://dk521123.hatenablog.com/entry/2024/05/31/005406
# Step1: Lambdaレイアーの実ファイル作成準備 resource "null_resource" "prepare_to_make_demo_layer_file" { triggers = { "requirements_diff" = filebase64("${path.module}/../lambda/requirements.txt") } provisioner "local-exec" { command = <<-EOF rm -rf ${path.module}/../outputs/layer/ && pip install -r ${path.module}/../lambda/requirements.txt -t ${path.module}/../outputs/layer/python EOF on_failure = fail } }
【2】terraform_data
* Terraform 1.4 で導入
https://developer.hashicorp.com/terraform/language/resources/terraform-data
1)用途
[1] null_resource の代わりに使う [2] replace_triggered_by に使用する
参考文献
https://zenn.dev/kou_pg_0131/articles/tf-1_4-terraform-data
参考文献
https://qiita.com/hayaosato/items/d6049cf68c84a26845d2
https://kazuhira-r.hatenablog.com/entry/2023/11/05/174542
関連記事
Terraform ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/05/000224
Terraform ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/09/222057
Terraform ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/05/03/000000