Как получить имя модуля Terraform программно? - PullRequest
0 голосов
/ 02 октября 2018

Я определил следующий модуль Terraform:

module "lambda" {
  source                = "../lambda"
  region                =  "us-west-1"
  account               = "${var.account}"
}

Как извлечь выгоду из имени модуля, чтобы задать параметр source с интерполяцией?Я желаю что-то вроде:

module "lambda" {
  source                = "../${this.name}"
  region                =  "us-west-1"
  account               = "${var.account}"
}

1 Ответ

0 голосов
/ 03 октября 2018

Я думаю, что это невозможно.Существует self, который позволяет вам ссылаться на атрибуты в вашем ресурсе, но идентификатор не является атрибутом.Кроме того, self разрешен только в провайдерах.

Я думаю, что единственный способ выполнить то, что вы хотите, - это шаблонирование файлов .tf, например:

module {{ my-module}} {
  source                = "../{{ my-module }}"
  region                =  "us-west-1"
  account               = "${var.account}"

, но вы должны отрендеритьшаблоны перед планированием и применением.Это легко настроить в конвейере CI, но я нахожу это громоздким при локальной работе.

...