Terraform имеет встроенный объект path
, который содержит атрибуты для различных путей, о которых Terraform знает:
path.module
- это каталог, содержащий модуль, в котором размещено выражение path.module
. path.root
- это каталог, содержащий модуль root. path.cwd
- текущий рабочий каталог.
При написании модулей Terraform мы чаще всего обычно хотят разрешить пути относительно самого модуля , чтобы он был автономным и не делал никаких предположений или не оказывал влияния на другие модули в конфигурации. Поэтому path.module
чаще всего является правильным выбором, делая модуль c тем, откуда он создается.
Очень редко используется текущий рабочий каталог, потому что это сделает конфигурацию Terraform чувствительной к тому, где он применяется и, вероятно, приведет к ненужным изменениям ресурсов, если впоследствии вы примените ту же конфигурацию из другого каталога или на другом компьютере в целом. Однако в редких ситуациях, когда такая вещь необходима, path.cwd
сделает это.
path.module
и path.root
- оба относительных пути от path.cwd
, потому что это минимизирует риск непреднамеренного введения подробности о системе, в которой Terraform запускается в конфигурации. Однако если по какой-то причине вам нужно нужен абсолютный путь к модулю, вы можете использовать abspath
, например abspath(path.module)
.