概要
過去に gitlab のデータをバックアップする方法を紹介しました
今回はバックアップしたデータを自動で S3 にアップロードする方法を紹介します
また gitlab のバージョンも 13 系になったのでコマンドが変わったのでそのあたりも紹介します
環境
- GitLab Enterprise Edition 13.3.5-ee
フルバックアップコマンド
gitlab-backup create
これですべてのデータベースやリポジトリのバックアップが取得できます
ビルドの成果物や git lfs のファイルも含まれるのでファイルがかなり大きくなるケースがあるので注意しましょう
デフォルトだとバックアップファイルは /var/opt/gitlab/backups/
に保存されます
ただこのコマンドにはセンシティブの設定ファイルやシークレットファイルが含まれていません
gitlab.rb と gitlab-secrets.json をバックアップする
実際に別サーバに移行するとなった場合にはこれらのファイルも必要です
先程の gitlab-backup create
コマンドにはこれらは含まれません
なので別途バックアップする必要があります
gitlab 12.3 以上であれば専用のコマンドがありこれで tar ファイルを作成してくれるのでこれを使いましょう
gitlab-ctl backup-etc
これで /etc/gitlab/config_backup/
に tar ファイルが作成されます
本題: S3 に自動アップロードする方法
本題の自動アップロード方法です
gitlab.rb に S3 のバケット名と認証情報を設定するだけです
なので事前にバケットの作成と認証情報の確認をしておきましょう
vim /etc/gitlab/gitlab.rb
gitlab_rails['backup_upload_connection'] = {
'provider' => 'AWS',
'region' => 'us-east-2',
'aws_access_key_id' => 'AKIxxxxxxxxxxxxxxxxxxx',
'aws_secret_access_key' => 'xxxxxxxxxxxxxxxxxxxxx',
# # If IAM profile use is enabled, remove aws_access_key_id and aws_secret_access_key
'use_iam_profile' => false
}
gitlab_rails['backup_upload_remote_directory'] = 'your-bucket-name'
設定できたら reconfigure を実行します
gitlab-ctl reconfigure
再度バックアップを実行して動作確認
では再度バックアップを実行してどうなるか確認してみます
まずフルバックアップしてみましょう
gitlab-backup create
Uploading backup archive to remote storage ...
というログが表示されるようになると思います
バケット側を確認するとちゃんと tar ファイルがアップロードされていることも確認できると思います
一応ローカル側にも tar ファイルは残っているようです
/var/opt/gitlab/backups/1601361216_2020_09_29_13.3.5-ee_gitlab_backup.tar
不要な場合は削除しましょう
backup_keep_time
どうやら gitlab.rb の backup_keep_time
が経過したらローカル側は自動で削除してくれるようです
試しに 1 秒にしてみたらすぐにローカルの tar ファイルは削除されました
gitlab_rails['backup_keep_time'] = 1
Excon::Error::Socket: Broken pipe (Errno::EPIPE)
自分は S3 のバケットがリージョン名が違っていたために発生しました
基本的にこのエラーが出た場合は gitlab.rb を見直して認証情報やリージョン情報など S3 の設定が間違っていないか確認しましょう
設定ファイルはどうなるか
次に設定ファイルのバックコマンドを実行して S3 にアップロードされるか確認してみました
gitlab-ctl backup-etc
こちらは S3 にアップロードされることはなくローカルに保存されるだけでした
おそらくセキュリティ的な面と /etc/gitlab
配下のサイズが大きくならないので、わざわざ S3 にアップロードする必要がないという判断なのかなと思います
最後に
gitlab のバックアップファイルを S3 に自動にアップロードする方法を紹介しました
gitlab.rb に S3 の情報を記載するだけで OK なので簡単にできると思います
また注意する点としては設定ファイルはフルバックアップに含まれないので別途手動でバックアップする必要があるということがわかりました
0 件のコメント:
コメントを投稿