まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

Terraformのoutputで空になるかもしれないlistでindexで値を取得したいときのハック

true or falseで作られないかもしれないresourceの値を取得したい

例えばこのようにneed_instanceみたいなBooleanで作るか作らないかを決めるみたいなresourceがあったときに

variable "need_instance" {
  default = false
}
resource "aws_instance" "hoge" {
  count = "${var.need_instance  ? 1 : 0}"
  ...
}

outputで一つ目のinstance_idが欲しいというときに

output "instance_id" {
  value = "${aws_instance.hoge.id}"
}

need_instance = falseだとここでエラーになってしまう。

workaround力技

github.com

こうする

 "${element(concat(aws_instance.hoge.*.id, list("")), 0)}"
  • 後ろに空文字のlistを必ずくっつけてあげる
  • HCLは複雑なことをするための言語ではないので、こういうのはしょうがない
  • countでresourceを作るということは、0 or 1と決めたのはこっちなので関係ない。それすなわちlistのresourceとなるということ