メニュー

技術ブログ

Denso IT Lab.社員による技術情報の紹介

Denso IT Laboratory researcher's blog sites

数式

RSS

ページトップへ

github:enterpriseのmigration

github:enterpriseが・・・・!!!

32bit版は,deprecatedになる流れなんですか,そーですか.64bit版にワンクリックで移行.とはいきませんよね,常識的に考えて.githubにmigrationの方法が書いてありました.それを参考に言われた通りにやってみてうまくいった件についてまとめてみます.

未だ,リポジトリのデータ量がそこまで大きくなっていなかったので,そこまで時間はかかりませんでした.当方,git loverなだけで,サーバ管理とかは苦手です.後,管理する人も他にちゃんといますけど・・・・.いわゆるat homeな雰囲気の会社なんで,その辺,通知とかその辺,徹底しなくても,通知できる小さな会社です(多分).ここに書いて合ったことが管理者として落ち度があったら,温かい目で読んでください.

おおまかな手順は以下です.

  1. サーバを止めることをみんなに通知する.
  2. まず移動元,つまり既存のsource githubサーバをメンテナンスモードにする.
  3. source githubサーバをバックアップする.
  4. 移動先,target githubサーバとして,新しい64bitモードの仮想サーバを起動する.
  5. target githubサーバに秘密鍵をセットして,アクセスできるようにする.
  6. github:enterpriseに用意されたツールで各種データをsource githubサーバからexportし,さらにtarget githubサーバにimportする.
  7. source githubサーバを止める
  8. target githubサーバを使い始める

通知+メンテナンスモード+バックアップ

これやっとかないと,大変なことになります.

新しいサーバを立ち上げる

弊社では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を移行する.

IPの設定は勝手にやるとネットワーク管理者に殺されるので気をつけましょう.source serverはもはやお役ご免なのでシャットダウンします.私は,VMWareのIPを変更し,次にtarget.serverのadminにログインし,サーバのgithub:enterpriseのadminページでtarget serverのIPをsource serverのものに変更しました.最後に,githubのコンソール上でサーバのIPを設定しました(CUIで変更するやつ).この辺はDNSとかの絡みもあると思うのでかなり環境に依存します.

以上,作業記録でした.


このエントリーをはてなブックマークに追加