21 марта 2021 Время чтения: 4 минуты

CI/СD как сервис в платформе VMmanager

Илья Калиниченко

Илья Калиниченко

DevOps платформы VMmanager

ISPSystem

В VMmanager вы можете предоставлять пользователям сервис по модели SaaS — разворачивать виртуальные машины с предустановленным ПО. Как организовать с помощью платформы автоматическую доставку CI/CD, рассказывает Илья Калиниченко, DevOps платформы VMmanager.

VMmanager поддерживает shell-скрипты. Для них можно задавать переменные. При создании виртуальной машины VMmanager автоматически запросит значения переменных у пользователей или сгенерирует их.

Настроим сервис, чтобы автоматически предоставлять виртуальные машины с готовой средой для разработки. Для этого создадим скрипт, который будет устанавливать Gitlab и Mattermost. В Gitlab есть все, что нужно для совместной работы разработчиков:

  • Репозиторий Git;
  • Удобный портал с разделением прав;
  • Встроенная система автоматизации интеграции и деплоя.

Mattermost — бесплатный аналог Slack. Разработчики любят обсуждать продукты, планировать, проектировать и просто поболтать, и Mattermost отлично подходит для этого.

Подготовим скрипт для установки Gitlab и Mattermost


# Установим SSH сервер
yum install -y curl policycoreutils openssh-server openssh-clients
systemctl enable sshd
systemctl start sshd

# Откроем в файрволе порты 22, 80 и 443
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=ssh
systemctl reload firewalld

# Установим Postfix
yum install postfix -y
systemctl enable postfix
systemctl start postfix

# Установим репозиторий Gitlab
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh |  bash

if [ -z "($GITLAB_URL)" ] || [ "($GITLAB_URL)" = "()" ]; then
    GITLAB_URL=gitlab.example.com
else
    GITLAB_URL="($GITLAB_URL)"
fi

if [ -z "($MM_URL)" ] || [ "($MM_URL)" = "()" ]; then
    MM_URL=mattermost.example.com
else
    MM_URL="($MM_URL)"
fi

# Установим Gitlab
EXTERNAL_URL="$GITLAB_URL" yum install -y gitlab-ce

# Включим Mattermost и настроем его
sed -i "/mattermost_external_url/cmattermost_external_url 'http://$MM_URL'" /etc/gitlab/gitlab.rb
sed -i "/mattermost\['enable'\]/cmattermost['enable'] = true" /etc/gitlab/gitlab.rb
sed -i "/mattermost_nginx\['enable'\]/cmattermost_nginx['enable'] = true" /etc/gitlab/gitlab.rb
sed -i "/letsencrypt\['enable'\]/cletsencrypt['enable'] = false" /etc/gitlab/gitlab.rb
sed -i "/package\['modify_kernel_parameters'\]/cpackage['modify_kernel_parameters'] = false" /etc/gitlab/gitlab.rb

# Запустим реконфигурацию, чтобы Gitlab создал все необходимые файлы и настройки
gitlab-ctl reconfigure

Зададим настройки в платформе VMmanager

Создание скрипта в VMmanager

Откроем в платформе список скриптов и создадим новый:

  • Название — имя скрипта, которое увидят клиенты;
  • Владелец — пользователь VMmanager, который будет обновлять скрипт по мере необходимости;
  • Доступ — всем или Владельцу. Тут можно на время отключить доступ клиентам к скрипту, чтобы что-то отладить;
  • Теги определяют, для каких ОС будет доступен скрипт. Мы включим его для CentOS 7 и на CentOS 8.
  • Краткое описание, которое увидит клиент в списке скриптов.
  • Параметры скрипта — это переменные. Их VMmanager будет запрашивать у пользователей при запуске скрипта. У нас таких переменных две:
    GITLAB_URL - домен, на котором будет работать Gitlab;
    MM_URL - домен, на котором будет работать Mattermost.
    Когда конечный пользователь будет заказывать сервис, VMmanager запросит у него эти данные.
  • Script — здесь напишем сам скрипт.

Проверим работу

Запустим наш скрипт на свежеустановленной VM. Обратите внимание, что GItlab — это большое приложение, которому нужно как минимум 4 ядра и 4GB оперативной памяти.
Системные требования для Gitlab

Создание ВМ с выполнением скрипта. Пользователи вводят в интерфейсе значения заданных переменных

После того, как скрипт отработает, перейдем в браузере на домен http://gitlab.example.com или http://mattermost.example.com для дальнейшей настройки.

Проверяем работу Gitlab: сервис развернут на указанном при создании ВМ домене http://gitlab.example.com
Проверяем работу Mattermost: сервис развернут на указанном при создании ВМ домене http://gitlab.example.com
Теперь ваши клиенты смогут в два клика установить себе CI\CD платформу для удобной разработки. Аналогично в VMmanager можно настраивать другие скрипты и предоставлять сервис по модели SaaS.
Скрипты в VMmanager. Документация

Попробуйте VMmanager для автоматической продажи SaaS и хостинга на VPS

VMmanager — платформа для виртуализации и автоматической выдачи виртуальных машин.

  • Поддержка виртуализации KVM и контейнеров LXD,
  • Интеграция с биллингами через готовые модули или по API,
  • Встроенный сервис бэкапов,
  • Разграничение прав пользователей,
  • Мониторинг и уведомления.