最近GCPのプロジェクト間でインスタンスを移行する作業を行いました。
その時の手順について記載します。
前提
- gcloudコマンドがインストールされていること。
- 移行元・移行先両方のプロジェクトに対し、編集者以上の権限があること。
手順
移行するインスタンスのスナップショットを作成する。
gcloud compute disks snapshot [移行元インスタンス名] \
--zone [移行元インスタンスのゾーン] \
--snapshot-names [作成するスナップショット名] \
--project [移行元プロジェクトID]
作成したスナップショットからディスクを作成する。
gcloud compute disks create [作成するディスク名] \
--zone [作成するディスクのゾーン] \
--source-snapshot [作成したスナップショット名] \
--project [移行元プロジェクトID]
作成したディスクからイメージを作成する。
gcloud compute images create [作成するイメージ名] \
--source-disk [作成したディスク名] \
--source-disk-zone [作成したディスクのゾーン] \
--project [移行元プロジェクトID]
作成したイメージから移行先でインスタンスを作成する。
gcloud compute instances create [移行先インスタンス名] \
--zone [移行先インスタンスのゾーン] \
--image [作成したイメージ名] \
--image-project [移行元プロジェクトID] \
--project [移行先プロジェクトID]
以上でインタンスを別のプロジェクトに移行することができます。
実際の作業では、イメージ作成後にTerraformを利用してインスタンスを作成しました。
後片付け
不要であれば、作成したスナップショット・ディスク・イメージは削除します。
スナップショットを削除する。
gcloud compute snapshots delete [作成したスナップショット名] \
--project [移行元プロジェクトID]
ディスクを削除する。
gcloud compute disks delete [作成したディスク名] \
--zone [作成したディスクのゾーン] \
--project [移行元プロジェクトID]
イメージを削除する。
gcloud compute images delete [作成したイメージ名] \
--project [移行元プロジェクトID]