Сокращение DRY кода для почти идентичных нескольких переменных в terraform - PullRequest
0 голосов
/ 14 января 2020

Я использую terraform 0.12.6 и пытаюсь создать объект, подобный:

variable "dc1" {
  type = object({
    A = object({ a = number })
    B = object({ a = number })
    C = object({ a = number })
    ...(12 times)...

Теперь, это уменьшенная версия кода, оригинальная теперь содержит более 200 строк.

Я не могу использовать list(object({...})), потому что я хочу убедиться, что пользователь знает, что он вводит значение a для A или B и т. Д.

Есть ли способ избежать написания object({ a = number }) снова и снова?


Редактировать:

Как и просили в комментариях ниже, добавьте более общую информацию о том, что Я пытаюсь сделать:

Я хочу иметь 12 почти идентичных kubernetes_deployment ресурсов, только некоторые настройки меняются в этих 12 случаях, например, image, name et c. Теперь эти 12 развертываний являются частью модуля, поэтому пользователь просто source этот модуль и установит значение как

dc1 = {
    A = { a = number }
    B = { a = number }
    C = { a = number }
}

Я не против изменить свой подход до тех пор, пока пользователь знает, что он знает, что он устанавливает значение a для A.

Я мог бы просто использовать:

    A = object({ a = number })
    B = object({ a = number })
    C = object({ a = number })

, чтобы не усложнять его, но это также много DRY кода, потому что object({ a = number }) повторяется для всех экземпляров.

...