Skip to content

Flytte GitLab fra en server til en ny

Jeg havde brug for at flytte min GitLab installation fra en server til en ny. Den gamle var overloaded og kørte med en ældre version af Ubuntu, så besluttede at det var på tide med en ny.

Jeg havde dog ikke lyst til at miste hele min opsætning og historik i GitLab. Det er selvfølgelig ikke noget problem med de enkelte Git reposetorys, da de har hele historikken, men der er brugere, SSL nøgler, grupper osv. som over tide er blevet sat op.

Backup af gammel server

Det første du skal gøre er at lave en backup af den gamle GitLab server.

GitLab har allede et backup system, som jeg allerede havde sat op, men lad os lige tage et kig på hvordan det gøres.

Åben filen /etc/gitlab/gitlab.rb
[code]nano /etc/gitlab/gitlab.rb[/code]

Finde denne variabel
[code]gitlab_rails[‘backup_path’][/code]
Den indeholder stien til hvor din GitLab backup bliver placeret.

Lav GitLab backup

Nu mangler du bare at sørge for at du har en helt frisk backup. Dette får du ved at køre backuppen manuelt.
[code]/opt/gitlab/bin/gitlab-rake gitlab:backup:create[/code]

Se efter om den skulle fejle, eller vil der nu være en ny backup i den mappe som er defineret i konfigurationen. 
For mit vedkommende er det /var/opt/gitlab/backup/

Nu har du så en komplet backup af selve GitLab data, det eneste vi mangler nu er selve GitLab konfigurationen.
Denne laver du ved at køre følgende.
[code]cd /var/opt/gitlab/backups/; sh -c ‘umask 0077; tar -cf $(date "+etc-gitlab-%s.tar") -C /etc/gitlab .'<br/>[/code]

Nu har vi så 2 filer som ligger i /var/opt/gitlab/backup/ som vi senere skal have kopiert over på den nye GitLab server. Derfor skal du lige sikre at du ved hvad filerne hedder. Backup filen GitLab laver har et timestamp i filnavnet og ender på _gitlab_backup.tar

Den nye GitLab server

På de nye server skal du sørge for at du har installeret GitLab. Jeg vil ikke komme ind på hvordan den installeres da der er en udemærket vejledning på GitLabs egen hjemmeside.

Stop GitLab services

For at der ikke skal blive problemer, skal vi først sikre at GitlLab ikke kører.
Det gøres ved at stoppe 2 servicese.
[code]gitlab-ctl stop unicorn[/code][code]gitlab-ctl stop sidekiq[/code]
Vi vil lige være helt sikre på at de ikke køre så vi laver lige en status for at kontrollere at de ikke statig kører.
[code]gitlab-ctl status[/code]

Kopier backup fra gammel GitLab server

Så skal vi have kopiere de 2 backup filer vi lavede tidligere over til vores nye server. Jeg benytter scp men du kan gøre som du lyster.
[code]scp user@old.girlab.server:/var/opt/gitlab/backup/[time-stamp]_gitlab_backup.tar /var/opt/gitlab/backup/[/code]
Du skal selvfølgelig erstatte, user, hostnavn og timestamp med det rigtige.
Det er også vigtigt at du ligger filen i GitLab backup mappen igen. Ellers kan den ikke importeres.

Importer gammel GitLab backup

Så er vi klar til at lave importen af GitLab backuppen fra den gamle server.
Dette sker først ved at vi køre en restore.
[code]gitlab-rake gitlab:backup:restore BACKUP=[time-stamp][/code]
Her skal du igen kende time stampen fra tidligere. Hvis du ikke har indsat den rigtige timestamp vil den efter list tid fejle.

Efter lidt tid vil den have importeret alt til den nye GitLab installation.

Du skal være opmærksom på at du ikke kan importer en GitLab backup til en anden version af GitLab, så du skal have den samme version på den nye server. Den vil fortælle dig hvir dette er et problem, så du evetuelt kan downgrade din version og senere opgradere den igen, når data fra backuppen er indlæst.

Det sidste der mangler for at have hele din bakup på plads er konfigurationen. 
Det er faktisk kun en fil vi er interessert i og det er gitlb-secrets.json, som indeholder de nøgler som GitLab bruger.

Dette gøre ved at køre følgende:
[code]tar xf ./etc-gitlab*.tar&lt;br/>cp ./gitlab-secrets.json /etc/gitlab/gitlab-secrets.json[/code]

Nu er vi så klar til lige at kontrollere at alting som det skal være og state GitLab igen.
[code]gitlab-ctl reconfigure&lt;br/>gitlab-ctl start&lt;br/>gitlab-rake gitlab:check SANITIZE=true[/code]

Comments (0)

Skriv et svar

Back To Top