🦌
社内向けにterraformモジュールを共有する
社内向けにterraformモジュールを共有したかった。
TerraformCloudは使わせて貰えなさそうだった。
gitでがんばることにした。
どうやってやるか
git の submodule という機能を使うことにした。
システム全体を定義したgitリポジトリの中にモジュールgitリポジトリをネストする構成を作る。
submoduleを使うにあたって、昔は色々設定が必要だったみたいだけど、いまは1コマンドを実行するだけ。cloneと同じ感覚で使える。
リポジトリ内のディレクトリ構成
モジュールディレクトリ(リポジトリ)
以下の通り作成する。
この中でmodulesディレクトリを作ると使う時に深くなるので、いきなりモジュールが露出するようにする。
$ tree tfm-network/
.
├── README.md
├── vpc/
│ ├── main.tf
│ ├── variables.tf
│ ├── .../
├── endpoint/
│ ├── main.tf
│ ├── variables.tf
│ ├── .../
プロジェクトディレクトリ(リポジトリ)
モジュールを使う側のプロジェクトディレクトリ設定。
一応、ローカルのモジュールとリモートのモジュールを分けるようにしてみた。
$ tree complete-module/
.
├── README.md
├── env/
│ ├── production/
│ │ ├── README.md
│ │ ├── variables.tf
│ │ ├── main.tf
│ │ ├── outputs.tf
│ ├── develop/
│ ├── .../
├── modules/
│ ├── localmoduleA/
│ │ ├── README.md
│ │ ├── variables.tf
│ │ ├── main.tf
│ │ ├── outputs.tf
│ ├── localmoduleAB/
│ ├── .../
├── modules-remote/
│ ├── tfm-network/
│ │ ├── vpc/
│ │ │ ├── main.tf
│ │ │ ├── variables.tf
│ │ │ ├── .../
│ │ ├── endpoint/
│ │ │ ├── main.tf
│ │ │ ├── variables.tf
│ │ │ ├── .../
参考URL
Discussion