В 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, который будет обновлять скрипт по мере необходимости;
- Доступ — всем или Владельцу. Тут можно на время отключить доступ клиентам к скрипту, чтобы что-то отладить;
- Теги определяют, для каких ОС будет доступен скрипт. Мы включим его для 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 для дальнейшей настройки.
Скрипты в VMmanager. Документация
Попробуйте VMmanager для автоматической продажи SaaS и хостинга на VPS
VMmanager — платформа для виртуализации и автоматической выдачи виртуальных машин.