Gitlab Source Installation zu Gitlab-omnibus umziehen

Ich habe vor kurzem unsere gitlab Installation von einer source Installation zu gitlab-omnibus migriert.

Hintergrund hierfür ist, dass Updates mit omnibus deutlich schneller und einfacher sind. Insbesondere wenn es neue Features wie die Docker Registry gibt können diese damit deutlich flotter und fehlerfreier ausgerollt werdem.

Der Prozess ist Sehr Simpel:

  1. Die Alte Gitlab Installation auf Aktuelle Version updaten.
  2. Alte Gitlab Installation deaktivieren
  3. Backup erstellen
    bundle exec rake gitlab:backup:create RAILS_ENV=production
  4. Neue Gitlab VM Vorbereiten und gitlab-ce installieren
  5. In der neuen VM die /etc/gitlab/gitlab.rb mit den richtigen Daten füttern
  6. Mittels gitlab-ctl reconfigure die gitlab Installation vervollständigen
  7. Das Backup der alten Installation auf die neue Installation kopieren (der richtige Ort ist in der variable gitlab_rails[‚backup_path‘] beschrieben)
  8. Das Backup mit gitlab-rake gitlab:backup:restore einspielen
  9. mit gitlab-ctl restart alles neustarten.

Done.

Fazit

Wie geschrieben ist die Migration sehr straightforward. Aber in einige Probleme bin ich gelaufen:

  • Ein Typo in gitlab_rails[‚ldap_servers‘]: Während Typos in den meisten Variablen zu verständlichen Fehlermeldungen führen kommt hier ein:
 Psych::SyntaxError
 ------------------
 (<unknown>): did not find expected key while parsing a block mapping at line 2 column 5

 

  • Backups mit externen Postgres Servern führen zu Problemen:

gitlab-rake gitlab:backup:create ist eine sehr schöne Funktion da sie ein gut funktionierendes Backup erstellt. Wenn man aber, wie ich, einen Externen Postgres Server verwendet, welcher eine andere Version benutzt, bekommt man die Fehlermeldung dass die pg_dump Version zwischen Client und Server nicht übereinstimmt.

Dies lässt sich beheben indem man die Identische Version des PostgreSQL Clients auf dem Gitlab Server installiert und in der gitlab.rb die gitlab_rails[‚env‘] anpasst:

gitlab_rails['env'] = {
 'PATH' => "/usr/pgsql-9.5/bin/:/opt/gitlab/bin:/opt/gitlab/embedded/bin:/bin:/usr/bin"
}