GitLab
omnibus-gitlab

マニュアルインストールのGitlabをOmnibus(CE)に移行する

More than 1 year has passed since last update.

この記事は

  • 昔々、Omnibus GitlabなんてものがなかったころマニュアルインストールしたGitlabのOmnibusへの移行メモです
  • バージョン1つずつ上げながらrake db:migrateしたり、手作業でworkhorseコンパイルしたりする地獄運用をやめたい。

前提

  • Ubuntu14
  • 現行のGitlabバージョン:8.11.3(古)

Omnibus Gitlabのインストール

  • 別のマシンに普通にOmmnibus Gitlabをインストールする
  • まずは準備
$ apt-get install curl openssh-server ca-certificates postfix
$ curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh > /tmp/script.deb.sh
$ chmod 777 /tmp/script.deb.sh
  • 移行元と完全に同じバージョンを入れる必要があるのでバージョンを確認してバージョン指定でインストールします
$ apt-cache policy gitlab-ce

(snip)
     8.11.3-ce.1 0
        500 https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ trusty/main amd64 Packages
(snip)

$ apt-get install gitlab-ce=8.11.3-ce.1
$ gitlab-ctl reconfigure
  • 普通にアクセスできるかブラウザから確認します

マニュアルgitlabのバックアップ実行

  • マニュアルgitlab側で下記コマンドでバックアップを作成します
$ cd /home/git/gitlab
$ /usr/local/rvm/gems/ruby-2.1.8/bin/bundle exec rake gitlab:backup:create RAILS_ENV=production
  • ちなみにバックアップの設定は下記のような感じです(元々S3に飛ばしてたのでその設定が入っていますが必須ではありません)
/home/git/gitlab/config/gitlab.yml
  backup:
    path: "tmp/backups"   # Relative paths are relative to Rails.root (default: tmp/backups/)
    keep_time: 1   # default: 0 (forever) (in seconds)
    upload:
      connection:
        provider: AWS
        region: ap-northeast-1
        aws_access_key_id: XXXXX
        aws_secret_access_key: 'XXXXX'
      remote_directory: 'xxx-gitlab-backups'

Omnibus Gitlabへバックアップを取り込み

secret情報の復旧

  • 上記で取得したバックアップファイルはDB関連の情報が暗号化されているようで、復号化キーを元の環境から持ってくる必要があります
  • キーのありかはバージョンによって微妙に異なるみたいです

マニュアルインストール側

/home/git/gitlab/config/secrets.yml
production:
  db_key_base: xxxxxxx
  secret_key_base: xxxxxxx
  otp_key_base: xxxxxxx

omnibus側

/etc/gitlab/gitlab-secrets.json
  "gitlab_rails": {
    "secret_key_base": "xxxxxxx",
    "db_key_base": "xxxxxxx",
    "otp_key_base": "xxxxxxx"
  },
  • マニュアル側のファイルからomnibus側のファイルへ3つのキーをコピペで張りつけておきます

バックアップ取り込みの実行

  • バックアップファイルを所定のディレクトリに配置します
    • tarが1つだけの場合は何も指定しなくてもそれを取り込むみたいです
mv /tmp/1499828797_gitlab_backup.tar /var/opt/gitlab/backups
  • 取り込みを実施します
/opt/gitlab/bin/gitlab-rake gitlab:backup:restore RAILS_ENV=production

無事

  • 取り込みに成功して普通にアクセスできるようになりました

ついでに

  • せっかくomnibusにしたので、最新のGitlabにupdateしました
apt-get install gitlab-ce
  • 最新の9.3.6に簡単に上がりました

終わりに

  • omnibusだとアップデート楽だなぁ(マニュアルは地獄)