バックアップ

Omnibus GitLab設定のバックアップとリストア

/etc/gitlab、あるいは少なくとも/etc/gitlab/gitlab-secrets.jsonのコピーを安全な場所に保管することをお勧めします。GitLabアプリケーションのバックアップを復元する必要がある場合は、gitlab-secrets.jsonも復元する必要があります。そうしないと、二要素認証を使っているGitLabユーザーはGitLabサーバーへのアクセスを失い、GitLab CIに保存されている’セキュア変数’は失われます。

設定のバックアップをアプリケーションデータのバックアップと同じ場所に保存することはお勧めしません。

Omnibus GitLabの設定はすべて/etc/gitlabに保存されています。設定をバックアップするには、sudo gitlab-ctl backup-etcを実行するだけです。/etc/gitlab/config_backup/にtarアーカイブが作成されます。ディレクトリとバックアップファイルはrootだけが読めるようになります。

:sudo gitlab-ctl backup-etc <DIRECTORY> を実行すると、指定したディレクトリにバックアップが配置されます。 ディレクトリが存在しない場合は作成されます。 絶対パスを推奨します。
注: backup-etc はGitLab 12.3で導入されました。

アプリケーションのバックアップを毎日作成するには、ユーザーrootのcronテーブルを編集します:

sudo crontab -e -u root

cronテーブルがエディターに表示されます。

/etc/gitlab/。たとえば、平日の火曜日(2日目)から土曜日(6日目) までの毎朝、バックアップを実行するようにスケジュールを設定します:

15 04 * * 2-6  gitlab-ctl backup-etc && cd /etc/gitlab/config_backup && cp $(ls -t | head -n1) /secret/gitlab/backups/

.tarファイルは以下のように解凍できます。

# Rename the existing /etc/gitlab, if any
sudo mv /etc/gitlab /etc/gitlab.$(date +%s)
# Change the example timestamp below for your configuration backup
sudo tar -xf gitlab_config_1487687824_2017_02_21.tar -C /

設定のバックアップをリストアした後は、忘れずにsudo gitlab-ctl reconfigure を実行してください。

マシンのSSHホスト・キーは、/etc/ssh/の別の場所に保存されます。 マシンのフル・リストアを行う必要がある場合は、中間者攻撃の警告を避けるために、これらのキーのバックアップとリストアも必ず行ってください。

設定バックアップとアプリケーションデータの分離

GitLabアプリケーションのバックアップ(Gitリポジトリ、SQLデータ)を設定バックアップ(/etc/gitlab)と同じ場所に保存しないでください。gitlab-secrets.json ファイル(場合によってはgitlab.rbファイルも)には、SQLデータベース内の機密データを保護するためのデータベース暗号化キーが含まれています:

  • GitLab二要素認証(2FA)のユーザーシークレット(‘QRコード’)
  • GitLab CI「セキュリティ変数

設定のバックアップをアプリケーションデータのバックアップから分離すれば、暗号化されたアプリケーショ ンデータが、復号化に必要な鍵とともに紛失/漏洩/盗難される可能性を減らすことができます。

アプリケーションのバックアップの作成

リポジトリと GitLab メタデータのバックアップを作成するには、backup create ドキュメントに従ってください。

バックアップの作成は、/var/opt/gitlab/backupsに tar ファイルを保存します。

GitLabのバックアップを別のディレクトリに保存したい場合は、/etc/gitlab/gitlab.rb に以下の設定を追加し、sudo gitlab-ctl reconfigureを実行してください:

gitlab_rails['backup_path'] = '/mnt/backups'

DockerコンテナでのGitLabインスタンスのバックアップの作成

コマンドの先頭にdocker exec -t <your container name> を付けることで、ホスト上でバックアップをスケジュールできます。

バックアップアプリケーション:

docker exec -t <your container name> gitlab-backup

設定とシークレットのバックアップ:

docker exec -t <your container name> /bin/sh -c 'umask 0077; tar cfz /secret/gitlab/backups/$(date "+etc-gitlab-\%s.tgz") -C / etc/gitlab'

注:これらのバックアップをコンテナ外部で永続化するには、/secret/gitlab/backups/var/opt/gitlabにボリュームをマウントする必要があります。

アプリケーションのバックアップの復元

バックアップ・リストアのドキュメントを参照してください。

パッケージ化されていないデータベースを使用したバックアップとリストア

パッケージ化されていないデータベースを使用している場合は、パッケージ化されていないデータベースの使用に関するドキュメントを参照してください。

リモート(クラウド)ストレージへのバックアップのアップロード

詳細はGitLab CEのバックアップ・リストアに関するドキュメントをご覧ください。

バックアップディレクトリの手動管理

Omnibus GitLabはgitlab_rails['backup_path']。このディレクトリはGitLabを実行しているユーザーによって所有され、そのユーザーのみがアクセスできるように厳格な権限が設定されています。このディレクトリにはバックアップアーカイブが保存され、機密情報が含まれます。組織によっては、バックアップアーカイブをオフサイトに発送するなどの理由で、権限を異なるものにする必要があります。

バックアップ・ディレクトリ管理を無効にするには、/etc/gitlab/gitlab.rb set:

gitlab_rails['manage_backup_path'] = false

警告この設定オプションを設定した場合、gitlab_rails['backup_path'] で指定されたディレクトリを作成し、user['username'] で指定されたユーザーが正しくアクセスできるように権限を設定するのはあなた次第です。これを怠ると、GitLab がバックアップアーカイブを作成できなくなります。