GitHub Enterprise ServerからGitHub with Data Residencyへのライブ移行を、手元のCLIから操作できるGitHub CLI拡張「gh-elm」が公開されている。個人アクセストークンで移行元のREST APIに接続するため、サーバーへのSSH接続は不要だ。
個人アクセストークンで移行元のAPIを操作
GitHubが公開するGitHub CLI拡張「gh-elm」は、GitHub Enterprise Server(GHES)からGitHub with Data ResidencyへのEnterprise Live Migrations(ELM)を操作する。GHESは移行元となる企業向けサーバー、GitHub with Data Residencyは移行先のサービスだ。
CLI拡張は手元の端末から、通常の個人アクセストークンを使ってGHESの「/enterprise/live-migrations」REST APIに接続する。サーバーへSSHでログインせずに移行を操作できるが、利用にはELMのREST APIを提供するGHESのバージョンが必要となる。
移行の作成から切り替えまでを扱う
gh elmの移行コマンドは、移行の作成、開始、状態確認、一覧表示、取り消し、切り替えを扱う。移行を作成した後も、その状態を確認しながら同じCLIから操作を続けられる。
入出力が対話可能な端末で引数なしのgh elmを起動すると、全画面の操作画面が開く。この画面では移行の作成、監視、制御から、移行先の詳細、リソース、レポートへの移動までを扱い、IDを繰り返しコピーせずに作業を進められる。
対話画面は移行元と移行先を検索して選択
移行の作成時には、設定済みのAPIから移行元リポジトリと移行先組織を読み込み、検索して選べる。移行先リポジトリ名には選択した移行元の名前が初期値として入り、必要に応じて編集できる。組織名とリポジトリ名を手入力する方法も用意されている。
スクリプトなど入出力が対話端末ではない環境でgh elmを引数なしで実行すると、画面の代わりにヘルプを表示する。自動処理では明示的なコマンドを使い、対応する操作の機械可読形式を指定する。
移行元のIDから移行先の操作へつなぐ
通常の移行作成コマンドは移行元側から移行先側の移行レコードも作成する。移行先側のレコードを直接作成する操作や、一時停止、再開、中止は、高度な操作として別に用意されている。
移行先側のコマンドで数値の移行IDが必要な場合は、gh elm migration target-idが移行元側のUUIDからそのIDを取得する。さらに移行先のレポートコマンドは、ノードレポートの要求と状態確認を行い、署名付きダウンロードURLを取得できる。