【Terraform】Terraform ~ 条件分岐 ~

■ はじめに

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