Migrasi data antar server tidak memakan waktu yang lama, dengan data 5GB sekitar 30 menit. Hasilnya sama dengan server yang lama. Perpindahan data/repository antar server Gitlab CE hanya membutuhkan waktu downtime minimal, tergantung dari besarnya data repository yang dimiliki.

Sebelum memulai proses migrasi, pastikan versi Gitlab CE di server lama dan server baru sama. Bisa di cek dengan

gitlab-rake gitlab:env:info
# outputnya 
...
...
GitLab information
Version:	12.8.2
Revision:	785e16f105a
Directory:	/opt/gitlab/embedded/service/gitlab-rails
DB Adapter:	PostgreSQL
DB Version:	10.12
URL:		https://gitlab.jaranguda.com
HTTP Clone URL:	https://gitlab.jaranguda.com/some-group/some-project.git
SSH Clone URL:	git@gitlab.jaranguda.com:some-group/some-project.git
Using LDAP:	no
Using Omniauth:	yes
Omniauth Providers: 
...
...

Khusus untuk migrasi kali ini saya upgrade Server Lama ke 12.8.2 (terbaru saat ini), baru mulai proses migrasi. Upgrade ini ngga perlu di lakuin ;), bisa saja langsung migrasi dengan versi yang ada saat ini.

Versi yang terinstall bisa juga di cek dengan

apt-cache policy gitlab-ce | grep Installed | cut -d ':' -f2
# output
12.8.2-ce.0

versi 12.8.2-ce.0 ini lah yang nanti akan kita install.

Bila anda menggunakan domain/subdomain yang sama. Ada baiknya A record DNS-nya disetting agar memudahkan generate SSL Letsencrypt.

Server Lama

Di server lama, cukup digunakan untuk ngebackup.
Backup Gitlab

gitlab-rake gitlab:backup:create

nama file dari backup diatas ‘1231231237_2020_03_06_12.8.2_gitlab_backup.tar’ proses ini akan menyimpan hasil backupnya ke /var/opt/gitlab/backups/

Setelah backup selesai, langsung matikan service Gitlab, agar user tidak salah push/pull. Karena bisa ada delay di propagation DNS.

gitlab-ctl stop

Server Baru

Di server baru ini, kalo bisa dimulai dari fresh-install biar tidak ada konflik dengan services lain.
Install Gitlab CE

sudo apt-get install -y curl openssh-server ca-certificates
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo EXTERNAL_URL="https://gitlab.jaranguda.com" apt-get install gitlab-ce

bila Gitlab di server lama belum upgrade ke versi baru, install versi yang sesuai dengan

sudo EXTERNAL_URL="https://gitlab.jaranguda.com" apt-get install gitlab-ce=12.8.2-ce.0

Hapus file gitlab.rb gitlab-secrets.json di /etc/gitlab

rm -f /etc/gitlab/gitlab.rb
rm -f /etc/gitlab/gitlab-secrets.json

Copy Backup Server Lama

Pindahkan backup dari server lama ke server baru.
Buat folder baru agar mudah

mkdir backup-server-lama

copy file backup, sesuaikan nama file gitlab_backup.tar

scp user@gitlab-lama.jaranguda.com:/etc/gitlab/gitlab.rb ~/backup-server-lama/
scp user@gitlab-lama.jaranguda.com:/etc/gitlab/gitlab-secrets.json ~/backup-server-lama/
scp user@gitlab-lama.jaranguda.com:/var/opt/gitlab/backups/1231231237_2020_03_06_12.8.2_gitlab_backup.tar ~/backup-server-lama/

Copy file gitlab.rb gitlab-secrets.json dari folder backup-server-lama ke /etc/gitlab

cp ~/backup-server-lama/gitlab.rb /etc/gitlab/gitlab.rb
cp ~/backup-server-lama/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json

Copy file backup ke /var/opt/gitlab/backups/ default lokasi backup Gitlab.

cp ~/backup-server-lama/1231231237_2020_03_06_12.8.2_gitlab_backup.tar /var/opt/gitlab/backups/

Ubah permission file backup tersebut agar bisa di-restore

chown git:git /var/opt/gitlab/backups/1583478177_2020_03_06_12.8.2_gitlab_backup.tar

Restore

gitlab-rake gitlab:backup:restore BACKUP=1583478177_2020_03_06_12.8.2

ganti 1583478177_2020_03_06_12.8.2 dengan output backup sebelumnya
ada beberapa pertanyaan, dijawab yes semua.

Setelah direstore, jalankan

gitlab-ctl reconfigure
gitlab-ctl restart

sampai ditahap ini proses restore telah selesai.

Masalah 2FA

Bila anda mengikuti tutorial dari atas, harusnya 2FA tidak ada masalah, tetapi bila 2FA tidak bisa digunakan setelah migrasi, solusinya adalah nonaktifkan 2FA, lalu di aktifkan kembali 2FA.

gitlab-rake gitlab:two_factor:disable_for_all_users

output perintah diatas

This will disable 2FA for 120 users...
Do you want to continue (yes/no)? yes
Successfully disabled 2FA for 120 users.

setelah user login, akan diminta untuk membuat baru 2FA.

Leave a comment

Your email address will not be published. Required fields are marked *