Мигриране на 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-вам от репотата си.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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'
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'
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) :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd /home/git/gitlab
bundle exec rake gitlab:backup:create RAILS_ENV=production
cd /home/git/gitlab bundle exec rake gitlab:backup:create RAILS_ENV=production
cd /home/git/gitlab
bundle exec rake gitlab:backup:create RAILS_ENV=production

2. Dump-нах базата на gitlab-a (в случая се казваше gitlabhq_production) :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mysqldump --compatible=postgresql --default-character-set=utf8 -r current_install.mysql -u root gitlabhq_production -p
mysqldump --compatible=postgresql --default-character-set=utf8 -r current_install.mysql -u root gitlabhq_production -p
mysqldump --compatible=postgresql --default-character-set=utf8 -r current_install.mysql -u root gitlabhq_production -p

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mkdir ˜/gitlab-bkp
cp /home/git/gitlab/tmp/1449128605_gitlab_backup.tar ˜/gitlab-bkp
cp current_install.mysql ˜/gitlab-bkp
mkdir ˜/gitlab-bkp cp /home/git/gitlab/tmp/1449128605_gitlab_backup.tar ˜/gitlab-bkp cp current_install.mysql ˜/gitlab-bkp
mkdir ˜/gitlab-bkp
cp /home/git/gitlab/tmp/1449128605_gitlab_backup.tar ˜/gitlab-bkp
cp current_install.mysql ˜/gitlab-bkp

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tar xvf ˜/gitlab-bkp/1449128605_gitlab_backup.tar
tar xvf ˜/gitlab-bkp/1449128605_gitlab_backup.tar
tar xvf ˜/gitlab-bkp/1449128605_gitlab_backup.tar

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
git clone https://github.com/gitlabhq/mysql-postgresql-converter.git
git clone https://github.com/gitlabhq/mysql-postgresql-converter.git
git clone https://github.com/gitlabhq/mysql-postgresql-converter.git

и мигрирах MySQL базата ми към Postgres такава.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd ~/mysql-postgresql-converter
python db_converter.py ~/current_install.mysql ~/database.psql
cd ~/mysql-postgresql-converter python db_converter.py ~/current_install.mysql ~/database.psql
cd ~/mysql-postgresql-converter
python db_converter.py ~/current_install.mysql ~/database.psql

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mv ~/database.psql db/database.sql
gzip database.sql
mv ~/database.psql db/database.sql gzip database.sql
mv ~/database.psql db/database.sql
gzip database.sql

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd ~/gitlab-bkp && tar -zcvf ~/1449128605_gitlab_backup.tar .
cd ~/gitlab-bkp && tar -zcvf ~/1449128605_gitlab_backup.tar .
cd ~/gitlab-bkp && tar -zcvf ~/1449128605_gitlab_backup.tar .

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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 , и след това изпълних :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo gitlab-ctl reconfigure
sudo gitlab-ctl reconfigure
sudo gitlab-ctl reconfigure

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Chef Client finished, 204/228 resources updated in 93.796473261 seconds
gitlab Reconfigured!
Chef Client finished, 204/228 resources updated in 93.796473261 seconds gitlab Reconfigured!
Chef Client finished, 204/228 resources updated in 93.796473261 seconds
gitlab Reconfigured!

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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 процеси :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gitlab-ctl restart
gitlab-ctl restart
gitlab-ctl restart

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
apt-get update && apt-get -u dist-upgrade -y
apt-get update && apt-get -u dist-upgrade -y
apt-get update && apt-get -u dist-upgrade -y

Това и направих и обнових до версия 8.2.2

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

Това е