自由気ままに書いちゃおう

好きなことをつらつらと・・・

【Terraform】(初心者向け)path.moduleとpath.rootについて

今回はpath.module と path.rootについてです。

 

 

■ はじめに

terraformコード内で何かしらのファイルを参照したり独自作成のテンプレートを参照するときに利用するのがpath.module , path.root です。

 

■ path.module について

Terraformの組み込みオブジェクトの一つに「path」があります。これに属性(module , root とか)を付与することでパスを取得することができます。

path.moduleは現在のモジュールが配置されているディレクトリを表します。言い換えると、現在のモジュールが配置されているディレクトリを参照します。

以下はサンプルです。

 

# 現在のモジュール内のファイルを参照する場合:
resource "aws_s3_bucket_object" "example" {
bucket = "my-bucket"
key = "path/to/object"
source = "${path.module}/files/example.zip"
}

# 現在のモジュール内のテンプレートファイルを参照する場合:
data "template_file" "example" {
template = file("${path.module}/templates/example.tpl")
vars = {
example_var = "example_value"
}
}

# 現在のモジュール内のスクリプトファイルを参照する場合:
resource "null_resource" "example" {
provisioner "local-exec" {
command = "${path.module}/scripts/example.sh"
}
}

■ path.root について

Terraformの組み込みオブジェクトの一つに「path」があります。これに属性(module , root とか)を付与することでパスを取得することができます。

path.rootは、ルートモジュールが配置されているディレクトリを表します。

ルートモジュールは、「terraform init コマンドを打ったディレクトリ」と読み替えて差し支えありません。

 

# ルートモジュール内のファイルを参照する場合:
resource "aws_s3_bucket_object" "example" {
bucket = "my-bucket"
key = "path/to/object"
source = "${path.root}/files/example.zip"
}

# ルートモジュール内のテンプレートファイルを参照する場合:
data "template_file" "example" {
template = file("${path.root}/templates/example.tpl")
vars = {
example_var = "example_value"
}
}

# ルートモジュール内のスクリプトファイルを参照する場合:
resource "null_resource" "example" {
provisioner "local-exec" {
command = "${path.root}/scripts/example.sh"
}
}

 

以上です。