В ходе миграции не возникло серьезных проблем.
Конфигурация железа
Форм-фактор: mini-itx
Плата: H81I-PLUS
Процессор: Core i5-4440
Память: KHX1600C10D3/8G
Накопитель №1: KINGSTON SV300S3
Накопитель №2: ST1000DX001-1CM1
Питание: 120W
Дистрибутив: CentOS release 6.6
Подготовка
Устанавливаем gitlab на новом железе и проверяем совпадают ли версии gitlab выполнив на обоих железяках: rpm -qa|grep gitlab.
Если не совпадают, то обновляем версии до актуальной.
На старом железе делаем резервную копию /etc/gitlab поскольку понадобятся как конфигурационный файл так и gitlab-secret.json: cd /etc && tar cvf gitlab.tar gitlab.
Далее создаем резервные копии репозиториев и базы данных: gitlab-rake gitlab:backup:create.
Заливаем все на новое железо через ssh: scp /etc/gitlab.tar /opt/backups/<backup_id>_gitlab_backup.tar <username>@<git-ip>:.
Переносим ssl сертификаты (если выписывали в startssl
Развертка
Логинимся на новое железо и раскидываем файлы по директориям: mkdir /opt/{backups,git-data} && cd /home/<username> && tar xvvf gitlab.tar && mv -f gitab/gitlab* /etc/gitlab/ && mv <backup_id>_gitlab_backup.tar /opt/backups && chown root:root /etc/gitlab -R.
Устанавливаем сертификаты: cd /home/<username> && rm-rf gitlab && tar xvvf gitlab-ssl && mv gitlab /etc/ssl && chown root:root /etc/ssl/gitlab -R.
Внесем исправление в скрипт проверки postgresql, чтобы не запиналось на sysctl.
Файл: /opt/gitlab/embedded/cookbooks/gitlab/recipes/postgresql.rb.
После строки 77 owner "root" добавляем следующие строки:
execute "sysctl" do
command "/sbin/sysctl -e -p /etc/sysctl.conf"
action :nothing
end
Запускаем настройку gitlab: gitlab-ctl reconfigure.
Восстанавливаем резервную копию и проверяем нет ли проблем:
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=<backup_id>
chmod -R ug+rwX,o-rwx /opt/git-data/repositories
chmod -R ug-s /opt/git-data/repositories
find /opt/git-data/repositories -type d -print0|xargs -0 chmod g+s
gitlab-ctl start
gitlab-rake gitlab:satellites:create
gitlab-rake gitlab:check SANITIZE=true
Добавляем задачу резервного копирования в планировщик задач:
crontab -e
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
Настройка Redis
Чтобы избежать потери данных при большом количестве занятой памяти добавляем в /etc/sysctl.conf параметр vm.overcommit_memory = 1 и применяем изменения командой sysctl -p.
Чтобы избежать больших задержек при работе с памятью выполняем echo never > /sys/kernel/mm/transparent_hugepage/enabled и вписываем в /etc/rc.local чтобы команда срабатывала при запуске ОС.
Теперь переписываем dns; лезем в веб-интерфейс и проверяем все ли на месте.
P.S.: скрипт инициализации обнаружен в /etc/init/giltab-runsvdir