Terraform の変数のとっちらかりをどうにかしたい

課題

Terraformは利用する変数を宣言しないとスクリプト内で利用することができない。

これは素晴らしい制約で、とんでもないところから謎の超スコープ変数が叩き込まれるのを防げて喜ばしいのだが、そうはいっても変数が大量に増えてくるととっちらかって管理しづらい。モジュールと呼び出し元の両方で宣言しないといけないのもなにげに手間。

まとめたいが、どうまとめたものか。

解決

ポイントは各変数をどの基準で分けるか。

結論、ひとまず下記で行く。

  1. Module横断とあるModule専用は分離する。
  2. Module専用の中でまとめられるものもまとめる。

たとえばこう。

    # Module横断
    environment = {
        "region" : "ap-northeast-1",
        "name" : "develop"
    }

    # Module専用
    personal_website_backend = {
        # モジュールの中の機能ごとにさらにまとめる
        "send_mail" : {
            "source_s3_key" : "xxxxxxxxxxxxxxxxxxxxxxxxx",
            "administrative_bucket" : "xxxxxxxxxxxxxxxxxxxxxxxxx",
            "administrator_mail_address" : "xxxxxxxxxxxxxxxxxxxxxxxxx",
            "service_name" : "xxxxxxxxxxxxxxxxxxxxxxxxx",
            "service_url" : "xxxxxxxxxxxxxxxxxxxxxxxxx",
            "mail_reply_title" : "xxxxxxxxxxxxxxxxxxxxxxxxx",
        }
    }