02 April 2019

(Русский) Миграция сборки Bitnami Gitlab на Gitlab CE

(Русский) Изначально клиентом был выбран Gitlab Virtual Appliance от Bitnami. И данная сборка успешно решала задачи долгое время. Но с ростом активности разработчиков проекта стали появляться проблемы с производительностью, а также появилась потребность в новом функционале современных версий Gitlab. Это привело к задаче по миграции.

Требования и ограничения:

  1. Необходимо уйти от сборки Bitnami на официальный репозиторий Gitlab CE;
  2. Обновления необходимо выполнять только по мажорным версиям:
    8 -> 9 -> 10 -> 11;
  3. Миграция с Ubuntu 14.04 на Centos 7.6 из-за 10-ти летней поддержки (серверная Ubuntu LTS поддерживается 5 лет).

Детальный план работ:

  1. Предварительные настройки базовой установки Centos 7sudo yum install -y curl policycoreutils-python openssh-server
    sudo systemctl enable sshd
    sudo systemctl start sshd
    sudo firewall-cmd –permanent –add-service=http
    sudo firewall-cmd –permanent –add-service=https
    sudo systemctl reload firewalld
    sudo yum install postfix
    sudo systemctl enable postfix
    sudo systemctl start postfix

    via: https://about.gitlab.com/install/#centos-7

  2. Настройка официального репозитория
    curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
  3. Миграция на gitlab-ce 9. Делаем пустышкуyum install gitlab-ce-9.5.10-ce.0.el7.x86_64
    systemctl start gitlab-runsvdir
    gitlab-ctl reconfigure
    systemctl stop gitlab-runsvdir
  4. Скопировать данные старого проекта на новый сервер
    scp -r old:/opt/bitnami new:/tmp
  5. Снять дамп данных с исходного гитлабаsystemctl stop gitlab-runsvdir
    pg_dump -U bitnami bitnami_gitlab > /tmp/bitnami_gitlab.sql
    пароль (доступен в gitlab.rc)
    sed -i ‘s/bitnami/gitlab/g’ /tmp/bitnami_gitlab.sql
  6. Перенос данных на новую машину
    mv /tmp/bitnami/apps/gitlab/repositories/* /var/opt/gitlab/git-data/repositories/
    chown git:git -R /var/opt/gitlab/git-data/repositories/
    cp /opt/bitnami/.ssh/authorized_keys /var/opt/gitlab/.ssh/authorized_keys
  7. Импорт БД и миграции БД
    gitlab-ctl start postgresql
    gitlab-ctl start redis
    sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d postgres
    drop database gitlabhq_production;
    create database gitlabhq_production;
    Ctrl+D

    /opt/gitlab/bin/gitlab-psql -d gitlabhq_production < /var/opt/bitnami_gitlab.sql
    gitlab-rake db:migrate
    gitlab-ctl stop

  8. Миграция на gitlab-ce 10yum remove gitlab-ce -y
    yum install gitlab-ce-10.8.7-ce.0.el7.x86_64 -y
    systemctl start gitlab-runsvdir
    gitlab-ctl reconfigure
    systemctl stop gitlab-runsvdir
  9. Миграция на gitlab-ce 11yum remove gitlab-ce -y
    yum install gitlab-ce.x86_64 0:11.8.1-ce.0.el7 -y
    systemctl start gitlab-runsvdir
    gitlab-ctl reconfigure
    gitlab-ctl prometheus-upgrade –skip-data-migration
    rm -f /opt/gitlab/service/*/supervise/lock
  10. Настроить проксирующий nginx и SSL-сертификаты на доменное имя (по требованию)по методике: https://docs.gitlab.com/omnibus/settings/nginx.html#enable-https
  11. Запуск
    systemctl start gitlab-runsvdir

 

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