Террагрант и общие переменные - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь что-то довольно простое, но, похоже, не могу обойти это. У меня есть следующая структура:

- terragrunt.hcl
-----dummy/
---------main.tf
---------terragrunt.hcl

Я хочу установить некоторые общие переменные на уровне root и использовать их в main.tf. Как я могу go объявить варибале на уровне террагранта root и получить ли они доступ ниже по течению?

Я попытался установить их как входные данные в root, но затем пришлось явно объявить «переменные» на фиктивном уровне, чтобы входные данные были подобраны. Я пытаюсь как-то определить эти вещи на уровне root, а не повторять объявления переменных на манекене / уровне. Это выполнимо?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Согласно документации Terragrunt: «В настоящее время вы можете ссылаться только на локальных пользователей, определенных в одном и том же файле конфигурации. Terragrunt автоматически не включает локальные объекты, определенные в родительской конфигурации блока включения, в текущий контекст». *

Однако Один из способов сделать это можно следующим образом:

  1. Создать файл, содержащий общие переменные (например, myvars.hcl)
  2. Загрузить его в дочерний террагрант:

    locals {
      myvars = read_terragrunt_config(find_in_parent_folders("myvars.hcl"))
      foo = local.myvars.locals.foo
    }
    

Надеюсь, это поможет!

0 голосов
/ 11 апреля 2020

Другие инструменты, такие как Ansible, имеют иерархию каталогов, в которой child может ссылаться на значение переменной, установленное на родительском уровне, или переопределять его.

В Terraform такого механизма нет, и каждый каталог, содержащий tf-файлы, является отдельным модулем Terraform. Таким образом, иерархия каталогов не может использоваться для передачи / наследования / ссылки на переменные Terraform.

Возможно, лучше допустить идею "downstream или upstream" go.

Один из способов определения общих переменных и поделиться ими с другими модулями Модули только для данных . Расширение этого и сделать общую переменную доступной во всем мире использует реестр Terraform , хотя это не предназначенное использование.

...