Мигриране на gitlab сървър към omnibus пакет

Мигриране на gitlab сървър към omnibus пакетМигриране на gitlab сървър към omnibus пакет.

Имам инсталиран гитлаб сървър от едно време, като самата инсталация съм я правил по старомодния начин – https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md
Обновяването му става доста сложно, като всеки път е нужно да правя 100 (пише ги в https://gitlab.com/gitlab-org/gitlab-ce/tree/master/doc/update). Обаче когато обнових до версия 8.1.4 се натъкнах на проблеми:
1. Неможех да push-вам към репотата си.
2. Неможех да pull-вам от репотата си.


error: Cannot access URL http://git.root.bg/root/fosnginx.git/, return code 22
fatal: git-http-push failed
error: failed to push some refs to 'http://git.root.bg/root/fosnginx.git'

Реших да обновя до версия 8.2 но нещата не се оправиха – остана си същата каша. Така реших да мигрирам стария си gitlab сървър към omnibus пакета от gitlab.
За целта пробвах да направя цялата схема на същата виртуалка където живее git-a ми, обаче нещата не се получиха, и затова си направих нова и направих самата миграция по следният начин :

1. На стария gitlab сървър направих бекъп на базата (там е MySQL, а при omnibus се ползва postgres) :


cd /home/git/gitlab
bundle exec rake gitlab:backup:create RAILS_ENV=production

2. Dump-нах базата на gitlab-a (в случая се казваше gitlabhq_production) :
mysqldump --compatible=postgresql --default-character-set=utf8 -r current_install.mysql -u root gitlabhq_production -p 

3. Създадох си работна папка в която копирах бекъпа на базата и бекъпа на gitlab-a :


mkdir ˜/gitlab-bkp
cp /home/git/gitlab/tmp/1449128605_gitlab_backup.tar ˜/gitlab-bkp
cp current_install.mysql ˜/gitlab-bkp

Разархивирах архива :

tar xvf ˜/gitlab-bkp/1449128605_gitlab_backup.tar

Изтеглих mysql-postgresql-converter

git clone https://github.com/gitlabhq/mysql-postgresql-converter.git
и мигрирах MySQL базата ми към Postgres такава.

cd ~/mysql-postgresql-converter
python db_converter.py ~/current_install.mysql ~/database.psql

След това копирах database.psql в директория ˜/gitlab-bkp/db/ , като изтрих файла ˜/gitlab-bkp/db/database.sql.gz и направих нов архив :

mv ~/database.psql db/database.sql
gzip database.sql

Накрая създадох бекъп архива на gitlab-a на ново със същото име :

cd ~/gitlab-bkp && tar -zcvf ~/1449128605_gitlab_backup.tar .

4. На новата виртуалка която вече бях създал (чист debian 7) дръпнах версията на omnibus пакета за която е и моя бекъп. Това е важно, защото иначе дава грешка при restore , като изписва че версиите несъответстват. В моят случай версията беше 8.1.3 и изпълних следните команди :


curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install gitlab-ce=8.1.3-ce.0

Изчаках да се изтегли и инсталира gitlab-ce , и след това изпълних :

sudo gitlab-ctl reconfigure

Уверих се че всичко минава по план и няма грешки :

Chef Client finished, 204/228 resources updated in 93.796473261 seconds
gitlab Reconfigured!

.. и след като приключи процеса с преконфигурирането, спрях следните процеси : unicorn и sidekiq , и копирах архива от старата машина в директория /var/opt/gitlab/backups и пуснах да възтановявам от него :


root@git:~# gitlab-ctl stop unicorn
ok: down: unicorn: 1s, normally up
root@git:~# gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up
root@git:~# mv 1449128605_gitlab_backup.tar /var/opt/gitlab/backups/
root@git:~# gitlab-rake gitlab:backup:restore BACKUP=1449128605

Възтановяването отне няколко минути , и след като приключи рестартирах всички gitlab процеси :

gitlab-ctl restart

Вече имах работещ gitlab сървър посредством omnibus пакет. Така вече лесно можеш да обновявам gitlab само чрез командата :

apt-get update && apt-get -u dist-upgrade -y
. Това и направих и обнових до версия 8.2.2

Накрая спрях старата машина и сложих айпито и на новата. По този начин успях процеса с миграцията и обновяването приключи и gitlab сървъра продължи да работи коректно, без грешки и бъгове!

Това е