2018年6月28日
インターステラの阿形です。
GCPではプロジェクトという単位でリソースを管理しており、そのプロジェクトのオーナーや権限を付与されたGoogleアカウントからいろんな操作を行います。
説明の便宜上、プロジェクト、イメージを以下のように仮定します。
$ gcloud config set project copy-image-prj
ついでにゾーンも設定しておきましょう。
$ gcloud config set compute/zone asia-northeast1-a
前準備ができたところで本題です。
まずは、コピー先のプロジェクトで新しいディスクをコピー元のディスクイメージを指定して作成します。ここでは作成するディスクはcopy-diskとします。
$ gcloud compute disks create copy-disk --image master-image --image-project master-image-prj
これでコピー元のイメージを使用して、コピー先で新しいディスクを作成できます。
単純にコピー元のイメージを使用してインスタンスを立てたいだけならこれで終わりなんですが、これをコピー先の方にイメージとして保存するにはもう一手間必要です。
作成したディスクを使用して、以下のコマンドでイメージを作成します。
$ gcloud compute images create copy-image --source-disk copy-disk
以上でコピーは終わりです。
不要なら作成したcopy-diskを削除しておきましょう。
最初良くわからなくて試した方法がこれです。が、面倒すぎて途中で挫折しました。
本来GCP以外にイメージを持ち出したり、逆に外部からイメージをインポートするための方法を利用します。
参考になるドキュメントは以下の2つ。
いろいろ調べたんですが、どうもイメージを直接コピーする方法はないようです。
gcloudコマンドも頻繁にバージョンアップしていますので、そのうちそういうコマンドも実装されるかもしれませんが、今のところは上記のようなやり方でやるしかなさそうです。