web-dev-qa-db-ja.com

Google Compute Engine:別のプロジェクトのスナップショットを使用しますか?

開発者コンソールに2つのプロジェクトがあります。 project-1のVMの1つの「スナップショット」を撮りました。プロジェクト1で作成したスナップショットを使用して、プロジェクト2で新しいVMを作成したい。現在、スナップショットがオプションに表示されない。プロジェクト間でスナップショットをインポートするにはどうすればよいですか?

26
Remis Haroon

プロジェクト1のスナップからイメージを作成し、プロジェクト2を使用してそのイメージからインスタンスを作成できます。

両方のプロジェクトで編集権限を持っていると思います。

あなたの質問は、スナップショットがあり、プロジェクト1のスナップからプロジェクト2のインスタンスを作成したいというものです。

スナップショットを作成したディスクがまだ利用できる場合、インスタンスに接続されていないことを確認します。それがまだインスタンスに接続されている場合は、[インスタンスの削除時にブートディスクを削除する]チェックボックスをオフにして、インスタンスを削除します。 [イメージ]に移動し、[ディスクからイメージを作成]をクリックして、このディスクからイメージを作成します。

使用可能なディスクがなく、スナップショットのみの場合、インスタンスを作成し、ブートディスクをスナップショットとして設定して、スナップショットを選択します。次に、上記の指示に従って、最初にインスタンスを削除してイメージを作成します。

これでプロジェクト1にイメージが作成されました。イメージの下にリストされているはずです。

理由はわかりませんが、プロジェクト2のコンソールにイメージが表示されません。ただし、gcloudを使用して、プロジェクト1のイメージを使用してプロジェクト2にインスタンスを作成できます。プロジェクト1でイメージをクリックします「RESTを表示」をクリックすると、次のような画像の完全なURLが表示されます。

https://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/Ruby-image

プロジェクト1のイメージを使用して、gcloudでプロジェクト2にインスタンスを作成します。

gcloud config set project <project-id-of-project-2>
gcloud config list

(プロジェクト2にいることを確認する必要があります)

gcloud compute instances create <name of instance> --image https://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/Ruby-image

もちろん、URLは異なります。

私はこれをテストしたところ、うまくいきました。さらにサポートが必要な場合はお知らせください。

35
chrispomeroy

@chrispomeroyによって投稿された答えは私にとってはうまくいきましたが、私はこれをますます行う必要があるので、少し簡単にすることができました。

project-1に画像があり、project-にその画像を使用してインスタンスを作成する必要があるとしましょう2

gcloud config set project "project-2"
gcloud compute instances create <name-of-new-instance> \
    --image <name-of-your-image-from-project-1> \
    --image-project "project-1"

これにより、URLを何にでも使用することを心配する必要がなくなります。

編集:私の答えはこの時点では彼のように見えますが、これに関するドキュメントはここにあります:

gcloud compute instances create

20
jiminikiz

イメージやスクラッチVMは必要なく、ソースVMを中断する必要もありません。ソースプロジェクトでスナップショットを作成するだけです。

$ gcloud compute --project p1 disks snapshot the-snapshot src-disk --snapshot-names=the-snapshot
Created [https://www.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot].

次に、上記で返された「作成済み」URLを指す--source-snapshotを使用して、宛先プロジェクトにディスクを作成します。

$ gcloud compute --project p2 disks create the-disk \
    --source-snapshot https://www.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot

この使用法はgclouddocs には示されていません。@ krishna praveenの回答で見つけましたが、彼の説明は正しくありません。インスタンスを削除したり、イメージを使用したりする必要はありません。そして、これはソースと宛先の両方がブートディスクであっても機能します:

$ gcloud compute --project p2 instances create the-vm --disk name=the-disk,boot=yes

何らかの理由でイメージが必要な場合でも、スナップショットをディスクに復元し、これを使用してスクラッチVMなしでイメージを作成できます。これは、スクラッチVMが起動時に自動的にサービスを開始し、同じプロジェクトネットワーク上で実行中の他のVMに干渉する可能性がある場合に適しています。

$ gcloud compute images create image-1 --source-disk=src-disk-image --source-disk-zone=zone1

この画像は別のプロジェクトで使用できます(上記の@jiminikizで示されています)。

$ gcloud compute --project p2 instances create <name-of-new-instance> --image image-1 \
    --image-project p1 --zone=zone
16
vdm

「chrispomeroy」によって提供されるソリューションは正常に機能しますが、最初に(project2サービスアカウントではなく)個人のgoogleユーザーアカウントでgcloudを初期化する必要があります(両方のプロジェクトへのアクセス権限があるため):

gcloud init([2]新しい認証情報でログインを選択)

次に、実際にVMをプロジェクト2に(プロジェクト1のベースイメージから)作成します)。

gcloud compute instances create testimg --image --image-project(URLは不要)私は今日テストし(2015年11月)、正常に動作します

2
Charles Walker

これはブラウザを介したクリックのみのソリューションです。何が必要ですか?画像が必要です。ディスクからイメージを作成するには、ディスクをインスタンスから切り離す必要があります。

Project1にインスタンスがある場合の手順は何ですか?

  • Project1のインスタンスからスナップショットを作成します。

  • Project1でこのスナップショットからインスタンスを作成します。 「インスタンスが削除されたらブートディスクを削除する」のチェックを外します。このインスタンスは、
    今、削除されます

  • 作成したインスタンスを削除します

  • [ディスク]メニューに移動すると、インスタンスのディスクが表示されているはずです。

  • [画像]メニュー-> [画像の作成]に移動します。ここでイメージを作成できます。デタッチされたディスクがない場合、ドロップダウンに使用可能なディスクはありません。

  • プロジェクト2に移動し、プロジェクト1用に作成したカスタムイメージを使用してインスタンスを作成します。方法?ブートディスク->変更->カスタムイメージ->プロジェクト1を選択->ここにカスタムイメージが表示されます

1
makkasi

私の知る限り、それは不可能です。あなたが説明したことを達成するための最善の行動は、 このチュートリアル を使用することです。空のディスクを作成し、問題のマシンに接続し、ブートパーティションをtarballしてクラウドストレージにアップロードするためのいくつかの手順があります。それが完了したら、ローカルにダウンロードし、プロジェクトを切り替えて、他のプロジェクトにアップロードします。 New Instanceをクリックすると、イメージのリストからマシンを選択できます。

0
Marius I

インスタンスは、イメージを使用してプロジェクト全体で作成できます。これで、プロジェクト1にイメージがある場合、プロジェクト2でも選択できます。

ただし、現在のところ、プロジェクト全体でディスクを表示することはできません。 VMと関連する追加ディスクをプロジェクト1からプロジェクト2に移行する必要がある場合は、以下に従ってください。

  1. スナップショットを使用し、gcloudコマンドインターフェイスを接続してProject 2にディスクを作成します。 Project 2に接続し、実行します。

    gcloud compute --project "GCPProject2" disks create "myserver-disk1" --size "50" --zone "us-east1-b" --source-snapshot https://www.googleapis.com/compute/v1/projects/GCPProject1/global/snapshots/snapshot-myserver-disk1 --description "DriveName" --type "pd-standard"
    
  2. 上記はProject2にディスクを作成します。次に、ブートディスクを保持して、Project1のインスタンスを削除する必要があります。次に、ディスクからイメージを作成しますmyserver-bootdisk。イメージが作成されたら、プロジェクト2に切り替えてからイメージからサーバーを作成し、ドロップダウンを使用してプロジェクト1からイメージを選択します。

  3. スナップショットから作成した追加のディスクを追加し、VMを作成します。

0
krishna praveen