環境
- Rocky Linux 9.1 (kernel 5.14.0-162.18.1.el9_1.x86_64
- gitlab version 15.8 -> 15.9
- gitlab はソースコードではなく dnf ( Omnibus package ) を利用
gitlab のバックアップ
基本的に以下サイトの通りに実行。
gitlab 12.2 以降は gitlab-rake ではなく gitlab-backup コマンドを使う。
$ sudo gitlab-backup create
加えて、/etc/gitlab/gitlab-secrets.json と /etc/gitlab/gitlab.rb もバックアップしといた方が良い。もしこれらのファイルをリストアしない場合、一見うまく戻ったように見えるが、全体の設定変更をしたときに 500 Server Error になり、以下の通り一部の DB 初期化を実行して直った。
[root@git ~]# gitlab-psql gitlabhq_production=# UPDATE projects SET runners_token = null, runners_token_encrypted = null; gitlabhq_production=# UPDATE namespaces SET runners_token = null, runners_token_encrypted = null; gitlabhq_production=# UPDATE application_settings SET runners_registration_token_encrypted = null; gitlabhq_production=# UPDATE ci_runners SET token = null, token_encrypted = null; gitlabhq_production=# exit
また、/etc/gitlab/gitlab.rb をデフォルト設定から変更している場合はこちらもバックアップしておく。
その他 TLS 証明書や SSH 鍵の設定情報なども必要に応じて。(ただし、ユーザープロファイルの SSH 公開鍵はバックアップに含まれている様子。リストア時に公開鍵が登録されていたことを確認できた。)
ちなみに、tar じゃなくて tar.gz (tgz) がいいのに、と思ったのだが、ファイルの中身としては gzip したものを tar しているようなので実質 tgz になっている。
gitlab のリストア
基本的に以下サイトの通りに実行。
リストアはバックアップで取得した tar ファイルを /var/opt/gitlab/backups/ に配置し、ファイル所有者を git に変更する。
$ sudo cp 1679481311_2023_03_22_15.8.1_gitlab_backup.tar /var/opt/gitlab/backups/ $ sudo chown git:git /var/opt/gitlab/backups/1679481311_2023_03_22_15.8.1_gitlab_backup.tar
そして次に puma と sidekiq だけ停止する。
$ sudo gitlab-ctl stop puma $ sudo gitlab-ctl stop sidekiq $ sudo gitlab-ctl status
そして以下コマンドでリストア。
$ sudo gitlab-backup restore BACKUP=1679481311_2023_03_22_15.8.1
BACKUP= には tar ファイルの最後の _gitlab_backup.tar を省いたものを指定する。
仕上げに reconfigure して restart して check。
$ sudo gitlab-ctl reconfigure $ sudo gitlab-ctl restart $ sudo gitlab-rake gitlab:check SANITIZE=true
バージョンアップ
今回は 15.8 から 15.9 にアップデートしてみた。
dnf で最新版を再インストール。
$ sudo dnf install gitlab-ce
reconfigure して restart して check。
$ sudo gitlab-ctl reconfigure $ sudo gitlab-ctl restart $ sudo gitlab-rake gitlab:check SANITIZE=true
なお、今回は minor version up だったため問題なかったが、大きくバージョンアップするときはアップグレードパスに従って、指定されたバージョンを経由する必要性が生じる可能性がある。
トラブルシュート
移行時や gitlab runner インストール時にエラーになったので対処法の備忘メモ。
500 something went wrong. のエラーが表示されたら以下を実行したのちに事象を再現させる。
# tail -f /var/log/gitlab/gitlab-rails/production.log
以下などが確認された場合、
ActionView::Template::Error (): 1: - breadcrumb_title _('Runners') 2: - page_title _('Runners') 3: 4: #js-admin-runners{ data: admin_runners_data_attributes } lib/gitlab/crypto_helper.rb:28:in `aes256_gcm_decrypt'
以下で対処。
# gitlab-rails dbconsole -- Clear project tokens UPDATE projects SET runners_token = null, runners_token_encrypted = null; -- Clear group tokens UPDATE namespaces SET runners_token = null, runners_token_encrypted = null; -- Clear instance tokens UPDATE application_settings SET runners_registration_token_encrypted = null; -- Clear runner tokens UPDATE ci_runners SET token = null, token_encrypted = null;
# gitlab-rails dbconsole SELECT * FROM ci_variables; DELETE FROM ci_variables WHERE project_id='XX';
# gitlab-rails console > ApplicationSetting.first.delete > ApplicationSetting.first
コメント