BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【Google Cloud】共有VPCが設定されたプロジェクト間でGCEインスタンスをコピーする

はじめに

こんにちは!BFT名古屋支店のマッチです。今回もGCEに関する記事になります。
開発環境で構築したインスタンスを本番環境に移したいなど、異なるプロジェクト間でGCEインスタンスをコピーしたいシチュエーションはあるかと思います。
今回は共有VPCが設定されたプロジェクト間でインスタンスをコピーする方法を検証するため、共有VPCの設定から試してみたので手順をご紹介します。

目次

前提

  • コピー元のインスタンスがすでに作成済みであること

  • コピー元とコピー先のプロジェクトが同一組織に属していること

IAMの権限を設定する

はじめに、共有VPC設定をするために必要なIAMの権限を設定します。

  • GCPにログインし、画面上部のプロジェクトメニューから組織を選択し、選択中のプロジェクトが組織名になっていることを確認します。

  • 「IAM」>「IAMと管理」に移動し、自身のアカウントに「Compute Shared VPC 管理者」と「組織の管理者」のロールを追加します。
    ※画像では「組織の管理者」を含む「オーナー」ロールを割り当てております。

共有VPC設定

次にコピー元のプロジェクトをホストプロジェクト、コピー先のプロジェクトをサービスプロジェクトとして共有VPCを設定します。

  • プロジェクトメニューからコピー元のプロジェクト(ホストに設定するプロジェクト)に移動します。

  • VPCネットワーク」>「共有VPC」に移動し、「共有VPCを設定」を選択します。

  • 「ホストプロジェクトを有効にする」で「有効にして続行」を選択します。

  • 「サブネットを選択する」で共有モードを選択し、「続行」をクリックします。「個々のサブネット」を選択した場合は共有するサブネットを個別に選択します。

  • 「サービスプロジェクトの接続」でサービスプロジェクト(コピー先のプロジェクト)を選択し、「役割別のユーザーの選択」で役割を選択して「保存」をクリックする。

インスタンスのコピー

ホストプロジェクトでコピーするインスタンスのカスタムイメージを作成した後、サービスプロジェクトでカスタムイメージからインスタンスを作成します。

  • 「Compute Engine」>「スナップショット」から「スナップショットを作成」を選択し、コピーするインスタンスのディスクスナップショットを作成します。

  • 「Compute Engine」>「イメージ」から「イメージを作成」を選択し、先程作成したスナップショットからイメージを作成します。

  • プロジェクトメニューからサービスプロジェクト(コピー先のプロジェクト)に移動します。

  • Cloud Shellを起動します。

  • Cloud Shell上で以下のコマンドを実行し、カスタムイメージからインスタンスを作成します。
gcloud compute instances create [作成するインスタンス名] \
    --image-project [ホストプロジェクトID] \
    --image [イメージ名] \
    --subnet projects/[ホストプロジェクトID]/regions/[サブネットのリージョン]/subnetworks/[サブネット名]
  • 以下のようなメッセージが表示されます。インスタンスを作成したいゾーンが表示されたものと異なる場合は「n」を入力し、Enterキーを押下すると、ゾーンのリストが表示されるため、ゾーン番号を入力してEnterキーを押下します。
Did you mean zone [ゾーン名] for instance: [インスタンス名] (Y/n)?

おわりに

今回はプロジェクト間でGCEインスタンスをコピーする方法をご紹介しました。手順の中で何度かプロジェクトを移動するので、どのプロジェクトで実施する作業か間違えないよう気をつけてください(筆者は組織の中で共有VPCを設定しようとして無駄に悩んでいました)。
ここまで読んでいただきありがとうございました。

参考

プロジェクト間での VM のコピー  |  Compute Engine ドキュメント  |  Google Cloud

共有 VPC をプロビジョニングする  |  Google Cloud