コンテンツにスキップ

Terraform Dynamic Block で動的にリソースを設定する

Terraform Dynamic Block を使うとリソースの設定を動的に行うことができる。 繰り返しや条件分岐ができるので、リソースの設定を DRY に記述できる。

Dynamic Block の書き方

Dynamic Block は次のように書く。

1
2
3
4
5
6
dynamic "resource_type" {
  for_each = var.var
  content {
    # リソースの設定
  }
}

resource_type はリソースの種類を指定する。 for_each には繰り返しの対象となるリストもしくは値を指定する。 content にはリソースの設定を記述する。

variable num が 0 以上 1 次の場合にのみ cpu_utilizationを設定する。 variablenumnullの場合はcpu_utilization を設定しない。

variable "num" {
  type        = number
  default     = null
  nullable    = true
  validation {
    condition = (var.num == null ? true : (
      var.num >= 0 &&
      var.num <= 1
      )
    )
    error_message = "Value must be between 0 and 1."
  }
}

resource "google_compute_region_autoscaler" "sample" {
  # 省略
  dynamic "cpu_utilization" {
    for_each = var.num != null ? [true] : []
    content {
      target = var.num
    }
  }
}