Как управлять несколькими независимыми развертываниями в Terraform

#jenkins #terraform #vmware

Вопрос:

нашим разработчикам и QAs необходимо автоматически развертывать инфраструктуру нескольких виртуальных машин в кластере vmware для целей тестирования и разработки. Каждый разработчик или специалист по контролю качества может иметь одну или несколько инфраструктур, управляемых исключительно им. Нам нужно запустить развертывание либо специально, либо автоматически (обычно по ночам).

Примеры использования:

  • Разработчик A хочет развернуть новую инфраструктуру с помощью текущей сборки приложения.
  • Разработчик B хочет повторно развернуть уже существующую инфраструктуру с помощью новой сборки
  • Разработчик C хочет уничтожить свою инфраструктуру, которая ему больше не нужна
  • Разработчик А хочет развернуть другую инфраструктуру с другой сборкой параллельно с первой.

Мы хотели бы использовать для этого Terraform, но есть проблема с управлением несколькими файлами состояний. Также мы хотели бы видеть текущие развертывания и управлять ими (например, запустить операцию повторного развертывания или уничтожения). У нас была идея создать задание Дженкинса и хранить файлы состояния в разных каталогах в рабочей области, но оно не является удобным для пользователя и надежным. Мы предпочитаем использовать инструмент, который может «обернуть» Терраформу и сделать это за нас. Но, к сожалению, мы не можем найти ничего подходящего. Мы проверили https://scalr.com/, http://www.glitterlabs.com/terraform_ui/index.html или https://terragrunt.gruntwork.io/. Ни один из них не подходил.

Можете ли вы порекомендовать какой-нибудь инструмент для этого? Или хороший подход, как это сделать с помощью jenkins (gitlab)?

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

1. Если вы используете Gitlab, есть ли причина, по которой вам нужно использовать здесь Дженкинса, а не Gitlab CI?

2. Конвейер Дженкинса имеет гораздо лучшую поддержку Terraform и другого программного обеспечения в целом, но, вероятно, для этого решения есть множество других неописанных причин.

3. @ydaetskcoR вы не можете легко вызвать gitlab CI кнопкой и указать название состояния, которое вы хотите изменить. У Дженкинса лучший графический интерфейс для предоставления пользовательских параметров

4. Рабочие пространства Terraform являются официальным ответом на эту проблему — ответом может быть создание новой рабочей области для каждого разработчика или для каждой ветви, хотя для этого может потребоваться изменить некоторые из ваших кодов terraform на шаблон в именах рабочих областей.

5. Я спрашиваю, потому что в Gitlab CI есть шаблон для сред обзора, которые мы широко используем именно для такого рода вещей.