使っていますか?Github Enterprise
かなり便利ですよね。
そんなわけで、、最近Github Entepriseの管理者とか、何故かやっちゃってるわけですよ。で、Backupしなきゃなーとおもって、tarballとか、rsyncとか、バックアップのコマンド1つずつsshごしに叩くとか、いろいろあるんですが、とりあえずGithub謹製のBackup Utilitesを使おうと思って、まあ簡単なんですけど、とりあえず書いておこうと思います。
Backup Utilities特徴ですが、差分のみをバックアップ取るらしいので従来のバックアップ方式よりもとても早い。また、メンテナスモードに入ることなくバックアップが取れます。
しかし、それも11.10.341
以上のバージョンのみ。それ以下の場合は、全てのバックアップをtarballで取るだけのツールになってしまうようなのでご注意を。
see also here
手順
事前準備
まず、Github Enterprise(以下GHE)を、最低でも11.10.341
以上にアップデートしましょう。
ってか、常に最新版を追っておきましょう。最近heartbleedとか、shellshockとか、うるさいし。GHEは大体1営業日程度でアップデートしてくれています。(確か。)
あと、Gitコマンドが使える鯖が必要です。MacユーザならきっとMacでもできるはず。自分はUbuntuが乗ってる鯖を適当に用意しました。
このバックアップ鯖がport22のsshでGHEと通信できる、公開鍵がマネジメントコンソールに登録されていることを確認します。
鍵がない場合はssh-keygen
で作ればいいじゃない!
Backup Utilitiesを準備する
まずスクリプトを持ってくる。
git clone -b stable https://github.com/github/backup-utils.git
次に、cloneしたディレクトリに移動し、設定ファイルをコピーします。
cp backup.config-example backup.config
その後、お好みのエディタでbackup.config
を開きます。僕はvimで開きます。
vim backup.config
そうするとこんなかんじのファイルが見えるはず。
# GitHub Enterprise backup configuration file
# The hostname of the GitHub Enterprise appliance to back up. The host
# must be reachable via SSH from the backup host.
GHE_HOSTNAME=""
# Path to where backup data is stored. By default this is the "data"
# directory next to this file but can be set to an absolute path
# elsewhere for backing up to a separate partition / mount point.
GHE_DATA_DIR="data"
# The number of backup snapshots to retain. Old snapshots are pruned after each
# successful ghe-backup run. This option should be tuned based on the frequency
# of scheduled backup runs. If backups are scheduled hourly, snapshots will be
# available for the past N hours; if backups are scheduled daily, snapshots will
# be available for the past N days ...
GHE_NUM_SNAPSHOTS=10
# The hostname of the GitHub appliance to restore. If you've set up a separate
# GitHub appliance to act as a standby for recovery, specify its IP or hostname
# here. The host to restore to may also be specified directly when running
# ghe-restore so use of this variable isn't strictly required.
#
# GHE_RESTORE_HOST="github-standby.example.com"
GHE_HOSTNAME
を自分のGHEのホストに変更します。
GHE_HOSTNAME="10.0.0.1"
必要であれば、GHE_DATA_DIR
とかも設定しますが、まあデフォルトで問題ないです。
接続確認する
bin
ディレクトリにあるghe-host-check
をまずやりましょう。これは設定と経路確保ができるかどうかを確認してくれます。
./bin/ghe-host-check
成功したら
のように表示されます。バージョン番号も表示してくれるので再度GHEのバージョンを確認しましょう。
バックアップを取る
ghe-backup
でバックアップを取れます。こんなかんじです。
./bin/ghe-backup
あとは待つだけ!sshの秘密鍵のパスフレーズを何回も求められます。ACLでinbound接続を許可してないようなネットワークであれば、パスフレーズなしのsshの鍵を作ってもいいかもですね。でも自己責任で。
cronとかに登録する
誰も使ってなさそうなときに走るように登録しましょう!下記は1日1回、2:00AMに走るようにしたcronの例です。
00 2 * * * /path/to/backup-utils/bin/ghe-backup
バックアップからリストアする
何はともあれ、SSHの鍵をリストアしたいGHEのホストに登録しましょう。リストア自体もSSHを通して行われるためです。
次に経路を確認します。例として10.0.0.1
をリストアしたいGHEのホストだとします。
.bin/ghe-host-check 10.0.0.1
その後、GHEをマネジメントコンソールからメンテナンスモードにして、
.bin/ghe-restore restore-hostname
これでしばらく待って、完了したらメンテナスモードを解除します。
まとめ
便利!簡単!
参考文献