Возможно ли перегрузить модуль terraform?

#terraform #google-kubernetes-engine

# #терраформирование #google-kubernetes-engine

Вопрос:

Возможно ли перегрузить модуль terraform?

Я вызываю модуль, который создает кластер GKE и пул узлов. В этом модуле отсутствуют параметры для указания возможностей GPU и gVisor. Мне интересно, возможно ли перегрузить модуль? по сути, я хочу добавить / добавить больше конфигураций к ресурсам, которые создает модуль.

Заранее спасибо.

Комментарии:

1. Об этом я не знаю. Вы можете скопировать модуль, а затем изменить его в соответствии с вашими требованиями (если позволяет лицензия).

2. Нет, это невозможно. Вы также не можете «перегрузить» ресурс (который в настоящее время существует в аналогичных DSL, например, Puppet).

Ответ №1:

Язык Terraform предпочитает композицию наследованию / расширению, поэтому нет механизма, который бы делал именно то, что вы предложили.

Вместо этого типичный ответ заключается в том, чтобы преобразовать один большой модуль в два или более меньших модуля, а затем заставить вызывающую конфигурацию объединить эти меньшие модули вместе для получения желаемого эффекта. В идеале, если вызывающий абонент обнаружит, что один из меньших модулей не соответствует его потребностям, он может заменить только этот модуль — либо другим модулем, служащим аналогичной цели, либо встроенным resource / data blocks — но продолжать использовать другие модули.

В конкретном примере, который вы привели, кажется, что может быть различие между кластером GKE и связанным с ним пулом узлов. Возможным новым дизайном может быть модуль, который объявляет только кластер GKE, а затем либо встроенные resource блоки для объявления узлов для регистрации в этом кластере, либо потенциально несколько модулей, которые инкапсулируют разные типы пула узлов, если ваша архитектура включает фиксированный набор архетипов узлов.

С учетом сказанного, если используемый вами модуль является сторонним, то ваши единственные варианты — либо использовать его по замыслу автора, либо написать свой собственный модуль, возможно, производный от исходного. Создание собственного «форка» модуля гарантирует, что будущие изменения в исходном модуле не смогут аннулировать сделанные вами изменения.