Open2

Terraformの「モジュール」という単語が指すものを整理する

anfangdanfangd

Terraform の基本的な概念である「モジュール」だが、コンテキストによって指すものが異なる。
特に初学者は混乱しやすいので整理しておきたい。

要約

大きくは次の2つ。

  1. module block
  2. 再利用可能な設定要素としての module

この中で 2.) がコンテキストによってさまざまな呼ばれ方をする。

anfangdanfangd

"reusable configuration components" としての module, re-usable modules

cf. https://developer.hashicorp.com/terraform/intro
cf. https://developer.hashicorp.com/terraform/language/meta-arguments/module-providers
cf. https://developer.hashicorp.com/terraform/language/modules/develop/publish

公開モジュールとローカルモジュール

cf. https://developer.hashicorp.com/terraform/intro/use-cases
cf. https://developer.hashicorp.com/terraform/intro/terraform-editions
cf. https://developer.hashicorp.com/terraform/intro/phases/adopt

Published modules

cf. https://developer.hashicorp.com/terraform/language/modules/develop/publish

module block

cf. https://developer.hashicorp.com/terraform/intro/phases/adopt
cf. https://developer.hashicorp.com/terraform/language/modules
cf. https://developer.hashicorp.com/terraform/language/modules/syntax
cf. https://developer.hashicorp.com/terraform/language/modules/sources
cf. https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on

root module と child modules, Published Module

cf. https://developer.hashicorp.com/terraform/language/modules
cf. https://developer.hashicorp.com/terraform/language/meta-arguments/module-providers
cf. https://developer.hashicorp.com/terraform/language/meta-arguments/module-providers
cf. https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on
cf. https://developer.hashicorp.com/terraform/language/meta-arguments/for_each
cf. https://developer.hashicorp.com/terraform/language/modules/develop/structure

parent module

cf. https://developer.hashicorp.com/terraform/language/meta-arguments/module-providers

nested module, internal modules

cf. https://developer.hashicorp.com/terraform/language/modules/develop/structure

モジュール構造の文脈で出てくる

Nested modules should exist under the modules/ subdirectory.

Any nested module with a README.md is considered usable by an external user. If a README doesn't exist, it is considered for internal use only.

Nested modules should be used to split complex behavior into multiple small modules that advanced users can carefully pick and choose.

If a repository or package contains multiple nested modules, they should ideally be composable by the caller, rather than calling directly to each other and creating a deeply-nested tree of modules.

submodules

cf. https://developer.hashicorp.com/terraform/language/modules/develop/structure

descendant modules

cf. https://developer.hashicorp.com/terraform/language/modules/develop/providers

shared module

cf. https://developer.hashicorp.com/terraform/language/modules/develop/composition

Data-only Modules

cf. https://developer.hashicorp.com/terraform/language/modules/develop/composition

shim module

cf. https://developer.hashicorp.com/terraform/language/modules/develop/refactoring

private modules

cf. https://developer.hashicorp.com/terraform/language/modules/develop/refactoring

関連

module registry

cf. https://developer.hashicorp.com/terraform/intro/phases/scale

module sources

cf. https://developer.hashicorp.com/terraform/language/modules

Developing Modules

cf. https://developer.hashicorp.com/terraform/language/modules

Registry modules

cf. https://developer.hashicorp.com/terraform/language/modules/sources

module call, calling module

cf. https://developer.hashicorp.com/terraform/language/meta-arguments/module-providers
cf. https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on

module dependencies

cf. https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on

module structure

cf. https://developer.hashicorp.com/terraform/language/modules/develop/structure

Module repositories

cf. https://developer.hashicorp.com/terraform/language/style

minimal module, simple module

https://developer.hashicorp.com/terraform/language/modules/develop/structure

complex module

cf. https://developer.hashicorp.com/terraform/language/modules/develop/structure

Module Composition

cf. https://developer.hashicorp.com/terraform/language/modules/develop/composition