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.