■ はじめに
Terraform で条件分岐をする方法についてまとめておく。
目次
【1】Terraform の 条件分岐 【2】構文 【3】用途例 【4】サンプル 例1:Hello world 例2:count との組み合わせでリソース切替
【1】Terraform の 条件分岐
* Terraform では、if はサポートしていないが 三項演算子(ternary operator)をサポートしている cf. ternary (ターナリー) = 三つから成る、三つ組の
【2】構文
<CONDITOIN> ? <TRUE> : <FALSE>
https://developer.hashicorp.com/terraform/language/expressions/conditionals
例
# 変数 number が 1の場合「yes」、それ以外は「no」を返す var.number == "1" ? "yes" : "no"
【3】用途例
* dev / prod で instance_type のグレード変更やインスタンス数を変更 => 運用コスト節約に役立つ
【4】サンプル
例1:Hello world
variable "env" { type = string default = "dev" } resource "aws_instance" "example" { # ! 注目 ! instance_type = var.env == "dev" ? "t2.small" : "t2.large" ami = "ami-0123456789" subnet_id = "subnet-12345678" }
例2:count との組み合わせでリソース切替
variable "env" { type = string default = "dev" } resource "aws_instance" "example_for_dev" { # ! 注目 ! count = var.env == "dev" ? 1 : 0 instance_type = "t2.small" ami = "ami-0123456789" subnet_id = "subnet-12345678" } resource "aws_instance" "example_for_prod" { # ! 注目 ! count = var.env == "dev" ? 0 : 1 instance_type = "t2.large" ami = "ami-0123456789" subnet_id = "subnet-12345678" }
参考文献
https://midorigame-jo.com/conditional-and-loop/#toc2
関連記事
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
Terraform ~ ループ ~
https://dk521123.hatenablog.com/entry/2024/08/12/231256
Terraform ~ Terraformあれこれ ~
https://dk521123.hatenablog.com/entry/2023/05/15/205352