1.この記事を書こうと思った背景
Terraform の description
に複数行書きたいとなったので調べた。また、p.s. に description
について分からなかったことも書き留めておく。
2.やりかた
Heredoc Strings | Strings and Templates - Configuration Language | Terraform by HashiCorp を読むと、ヒアドキュメント を使うとよさそうだ。
variable
の description に使ってみる。
variable "instance_types" {
description = <<-EOT
検証用なのでできるだけお金をかけないようにしている。
大きいサイズは、t3.xlarge などがある。
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes
EOT
default = ["t2.small", "t3.small", "t2.medium"]
#default = ["t3.xlarge", "t3.2xlarge"]
}
3.小ネタ)EOT としているワケ
Terraform のドキュメントのサンプルコードにおいて、EOT としているのは、end of text
の意味を込めているからだという。
In the above example, EOT is the identifier selected. Any identifier is allowed, but conventionally this identifier is in all-uppercase and begins with EO, meaning “end of”. EOT in this case stands for “end of text”.
出所:Heredoc Strings | Strings and Templates - Configuration Language | Terraform by HashiCorp
ちなみに、EOF は end of file
の略称だとみるのが一般的らしい。
※ 上記の variable
の description
で使っている EOT
を EOF
に変えて apply したところ、No changes. Your infrastructure matches the configuration.
と変更差分なしとなった。(heredoc の識別子は任意の文字なので当たり前の結果。)
variable "instance_types" {
description = <<-EOF
検証用なのでできるだけお金をかけないようにしている。
大きいサイズは、t3.xlarge などがある。
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes
EOF
default = ["t2.small", "t3.small", "t2.medium"]
#default = ["t3.xlarge", "t3.2xlarge"]
}
p.s. description
は variable
と output
で書くことができると思いますが、terraform plan
や terraform output
で参照することはできないですよね、、。description があることでコードの可読性があがるので description があるだけでも価値はあると思うので、よいのですが。。