- プログラミング
github:enterpriseのmigration
github:enterpriseのmigration
32bit版は,deprecatedになる流れなんですか,そーですか.64bit版にワンクリックで移行.とはいきませんよね,常識的に考えて.githubにmigrationの方法が書いてありました.それを参考に言われた通りにやってみてうまくいった件についてまとめてみます.
未だ,リポジトリのデータ量がそこまで大きくなっていなかったので,そこまで時間はかかりませんでした.当方,git loverなだけで,サーバ管理とかは苦手です.後,管理する人も他にちゃんといますけど・・・・.いわゆるat homeな雰囲気の会社なんで,その辺,通知とかその辺,徹底しなくても,通知できる小さな会社です(多分).ここに書いて合ったことが管理者として落ち度があったら,温かい目で読んでください.
これやっとかないと,大変なことになります.
弊社ではmac mini+VMWare Fusionを使っているので,一時的な作業用のMacを用意しました.そのマシンのVMWare Fusion上で移動先となる新しい64bit版のgithub:enterpriseの仮想マシンを起動します.このとき,root disk full問題を回避するために,先に仮想マシンのディスク容量を調整しておきましょう.弊社は,Facebookさんではないので,リポジトリひとつで54GBみたいなことはありません.
この64bit版のサーバをtarget serverとします.また,古いサーバをsource serverとします.そして,起動したtarget serverいつものようにadminでログインし,公開鍵をセットし,作業用のクライアントマシンからアクセスできるようにします.
公開鍵を渡した作業用のマシンから,以下のssh経由のコマンドでsource serverからデータをダウンロードします.
$ ssh admin@source.server -- 'ghe-export-authorized-keys' > authorized-keys.json
$ ssh admin@source.server -- 'ghe-export-es-indices' > es-indices.tar
$ ssh admin@source.server -- 'ghe-export-mysql' | gzip > enterprise-mysql-backup.sql.gz
$ ssh admin@source.server -- 'ghe-export-redis' > backup-redis.rdb
$ ssh admin@source.server -- 'ghe-export-repositories' > enterprise-repositories-backup.tar
$ ssh admin@source.server -- 'ghe-export-pages' > enterprise-pages-backup.tar
$ ssh admin@source.server -- 'ghe-export-ssh-host-keys' > host-keys.tar
これでデータが作業マシンにダウンロードされます.リポジトリのバックアップデータ等は大量になるので・・・・気をつけてください.そんで,次にこのデータをtarget serverにアップロードします.アップロードも同様にssh経由で行います.
$ ssh admin@target.server-- 'ghe-import-authorized-keys' < authorized-keys.json
$ ssh admin@target.server-- 'ghe-import-es-indices' < es-indices.tar
$ gzip -dc enterprise-mysql-backup.sql.gz | ssh admin@target.server-- 'ghe-import-mysql'
$ ssh admin@target.server-- 'ghe-import-redis' < backup-redis.rdb
$ ssh admin@target.server-- 'ghe-import-repositories' < enterprise-repositories-backup.tar
$ ssh admin@target.server-- 'ghe-import-pages' < enterprise-pages-backup.tar
$ ssh admin@target.server-- 'ghe-import-ssh-host-keys' < host-keys.tar
データの移行には時間がかかります.気長に待ちましょう.
次に,移行先のtarget.serverにコマンドを発行し,サーバのmigrationを実行させます.実行には,github:enterpriseのライセンスファイルのmd5が必要です.md5はコマンド作成します.md5を使って,curlコマンド等で,migration実行のクエリをポストします.
curl -i -X POST 'http(s)://target.server/setup/api/configure?license_md5=[your-GHL-md5]&complete=true’
うーん,かっこいいなぁ.使い勝手がすごい.これで移行が完了です.
IPの設定は勝手にやるとネットワーク管理者に殺されるので気をつけましょう.source serverはもはやお役ご免なのでシャットダウンします.私は,VMWareのIPを変更し,次にtarget.serverのadminにログインし,サーバのgithub:enterpriseのadminページでtarget serverのIPをsource serverのものに変更しました.最後に,githubのコンソール上でサーバのIPを設定しました(CUIで変更するやつ).この辺はDNSとかの絡みもあると思うのでかなり環境に依存します.
以上,作業記録でした.