TL;DR

Terraform がまとめて管理するリソースの集まり。再利用できるモジュールを使うと、インフラの構築を標準化し、同じ構成を繰り返し作れる。

仕組み

公式ドキュメントによると、ワークスペースのルートディレクトリにある設定ファイルはルートモジュールと呼ばれる。module ブロックで呼び出すモジュールは子モジュールと呼ばれる。ルートモジュールは子モジュールを何度でも呼び出せ、子モジュールもさらに子モジュールを呼び出せる。

モジュールはローカルのファイルシステム、レジストリ、VCS のリポジトリから読み込める。公開されたモジュールは Terraform Registry にあり、source と version を指定すると自動でダウンロードされる。モジュールの値は入力変数で受け取り、出力値で外に公開する。呼び出し側は module.<label>.<output> の形で出力値を参照する。

例

module "consul" {
  source  = "hashicorp/consul/aws"
  version = "0.1.0"
}

関連

出典