← All Articles

Terraformでcompact関数を使ってみる

Posted on

はじめに

引数で値を渡して配列に追加したかったのですが 引数の値が存在する場合としない場合があるという条件がありました。

その中でcompactという関数を使いましたのでメモしておきます。

compactは、配列の中の空文字列を除去してくれる関数となります。

検証環境

■OS

macOS BigSur

■ Terraform

v1.1.7

compact を利用する前の状態

変数 a , b を定義して output_list に配列として設定するようにしています。 この場合 a , b が定義できる場合はよいのですが、定義できない場合 output_list に空文字が入ってしまいます。 空文字が入ると resouce で利用する時、エラーになってしまうことがあるため除去したい状況でした。

variable "a" {
    type = string
    default = ""
}

variable "b" {
    type = string
    default = ""
}

locals {
    output_list=[
        var.a,
        var.b
    ]
}

output "output_list" {
    value = concat(local.output_list)
}
$ terraform plan
<省略>
Changes to Outputs:
  + output_list = [
      + "",
      + "",
    ]

compact を利用した状態

compact を利用することにより空文字が除去されて、配列が綺麗になりました。

variable "a" {
    type = string
    default = ""
}

variable "b" {
    type = string
    default = ""
}

locals {
    output_list = compact( ## compactの引数に配列を適用する
        [
            var.a,
            var.b
        ]
    )
}

output "output_list" {
    value = concat(local.output_list)
}
$ terraform plan
<省略>
Changes to Outputs:
  + output_list = []

参考文献

compact Function

技術Terraform