Как указать пользовательские файлы конфигурации для модулей terragrunt?

Я пытаюсь создать сценарий Terragrunt для развертывания инфраструктуры в облаке Microsoft Azure. Вещи работают довольно хорошо, но я не могу понять одну вещь.

Структура настройки выглядит примерно так:

rootdir
  terragrunt.hcl
  someconfig.hcl
    module1dir
      terragrunt.hcl
      config.auto.tfvars.json
    module2dir   
      terragrunt.hcl
      config.auto.tfvars.json
    module3dir   
      terragrunt.hcl
      config.auto.tfvars.json

Каждый модуль настраивается с использованием функции автозагрузки Terraform tfvars с config.auto.tfvars.json. Я бы хотел, чтобы эти файлы находились вне структуры каталогов и каким-то образом инструктировали Terragrunt применить правильный внешний файл конфигурации для исправления подмодуля.

Любые идеи?


person Darko Miletic    schedule 21.10.2020    source источник


Ответы (1)


Я решил это следующим образом:

Определите переменную среды, которую вы планируете использовать, которая должна содержать расположение файлов конфигурации. Убедитесь, что он не конфликтует ни с чем существующим. В этом примере мы будем использовать TGR_CFGDIR. Во внешний модуль конфигурации поместите файлы конфигурации модуля и убедитесь, что они правильно названы. Каждый файл должен называться модулем и заканчиваться на .auto.tfvars.json. Итак, если ваш модуль называется foo, у вас должен быть файл конфигурации foo.auto.tfvars.json. Измените свои модули terragrunt (terragrunt.hcl) так, чтобы они содержали следующие операторы:

locals {
  moduleconfig = get_env("TGR_CFGDIR")
  modulename   = basename(get_terragrunt_dir())
}

generate "configuration" {
  path              = "config.auto.tfvars.json"
  if_exists         = "overwrite"
  disable_signature = true
  contents          = file("${local.moduleconfig}/${local.modulename}.auto.tfvars.json")
}

И, наконец, вызовите terragrunt cli вот так:

TGR_CFGDIR="<configdir>" terragrunt "<somecommand>"
person Darko Miletic    schedule 22.10.2020