0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terraformモジュールの相対パス指定方法について

Posted at

Terraform でモジュールを参照する際の相対パスの指定方法について、よくあるケースと注意点を説明します。

同じディレクトリ階層のモジュールを参照する場合

以下のような構成でmodules/random_strrandom_string リソースを含むモジュールがあるとします:

modules/random_str/main.tf
resource "random_string" "random" {
  length           = 16
  special          = true
  override_special = "/@£$"
}

このモジュールをルートディレクトリの main.tf から参照する場合は、以下のように記述します:

main.tf
module "test" {
  source = "./modules/random_str"
}

重要な注意点

パスの指定には必ず ./から始める必要があります。
source = "modules/random_str" のように ./ を省略すると、以下のようなエラーが発生します:

╷
│ Error: Invalid module source address
│
│   on main.tf line 2, in module "test":
│    2:   source = "modules/random_str"
│
│ Terraform failed to determine your intended installation method for remote module package "modules/random_str".
│
│ If you intended this as a path relative to the current module, use "./modules/random_str" instead. The "./" prefix indicates that the address is a relative filesystem path.
╵

異なるディレクトリ階層からモジュールを参照する場合

例えば environments/development ディレクトリから、上記の modules/random_str を参照する場合は、共通の親ディレクトリまで ../ で遡って指定します:

environments/development/main.tf
module "test" {
  source = "../../modules/random_str"
}

ディレクトリ構成例

参考までに、上記の例で想定しているディレクトリ構成は以下のようになります:

├── modules
│   └── random_str
│       └── main.tf
└── environments
    └── development
        └── main.tf

このように構造化することで、環境ごとの設定とモジュールの再利用が容易になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?