Terrafrom Moduleを書く時に知っておいた方が便利なこと

Terraform Moduleを作るときのTips

ドキュメントの自動生成

variables の description から自動でドキュメントを生成してくれます.

Null

リソースの引数を Null にすると,Terrafromは引数が省略されたように振る舞います. 1つは,引数に応じてあったりなかったりを切り替えたいケースで利用します

variable "acl" {
   type    = string
   default = null
}

みたいにして

resource "aws_s3_bucket_acl" "this" {
       .
       .
       .
   acl = var.acl
       .
       .
       .
}

とすると,aclを指定しない場合は,aclを省略できます.terrafromではif文などでリソースの引数を調整する方法は用意されていないのでこのような方法を利用する必要があります.

lookup 関数

moduleのコードを読んでいると頻出です.前述したNullと組み合わせてよく使います.

lookup(map, key, default)

mapを引数に取り,指定されたkeyに値がなければ,defaultを返します.

例えば,

bucket  = lookup(access_logs.value, "bucket", null)

みたいに書くと,access_logs.value に key がないと,null が返ります.つまり,map にどのようなキーがあるかによってある設定の有効無効が切り替えられます.


他なんかあったけかな.

基本的すぎて書いていないけど,forとfor_each,三項演算あたりは覚えておかないと辛いと思う.moduleのコードを読んでいると,countやfor_eachで条件に応じてリソースを作成するかしないかを分けたりするのも頻出です.

とりあえず,最近覚えて便利に感じたことを書いてみました.