共有イメージからインスタンスを作成する


このドキュメントでは、別のプロジェクトで共有されているカスタム イメージから Compute Engine インスタンスを作成する方法について説明します。

インスタンスには、ブートローダー、ブート ファイル システム、OS イメージが含まれています。ソースディスク、イメージ、スナップショット、Cloud Storage に保存されているイメージからカスタム イメージを作成し、そのイメージを使用してインスタンスを作成できます。デフォルトでは、カスタム イメージは作成されたプロジェクトにのみ属します。別のユーザーとイメージを共有している場合は、そのイメージを使用してインスタンスを作成できます。

始める前に

  • Google Cloud CLI または Compute Engine API を使用してイメージからインスタンスを作成する場合、1 秒あたりのインスタンスには 20 個の上限が存在します。1 秒間にこれ以上のインスタンスを作成する必要がある場合は、イメージ リソースの 割り当て上限の引き上げをリクエストします。
  • まだ設定していない場合は、認証を設定します。認証とは、 Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロール

共有イメージからインスタンスを作成するために必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1) roles/compute.instanceAdmin.v1)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

この事前定義ロールには、共有イメージからインスタンスを作成するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

共有イメージからインスタンスを作成するには、次の権限が必要です。

  • プロジェクトに対する compute.instances.create
  • 共有イメージを使用してインスタンスを作成する: イメージに対する compute.images.useReadOnly

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

共有イメージからインスタンスを作成する

共有イメージからインスタンスを作成する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

    プロンプトが表示されたら、プロジェクトを選択して [続行] をクリックします。

    [インスタンスの作成] ページが表示され、[マシン構成] ペインが表示されます。

  2. [マシンの構成] ペインで、次の操作を行います。

    1. [名前] フィールドに、インスタンスの名前を指定します。詳細については、リソースの命名規則をご覧ください。
    2. 省略可: [ゾーン] フィールドで、このインスタンスのゾーンを選択します。

      デフォルトでは [すべて] が選択されています。このデフォルト選択を変更しない場合、マシンタイプと可用性に基づいてゾーンが自動的に選択されます。

    3. インスタンスのマシン ファミリーを選択します。Google Cloud コンソールに、選択したマシンファミリーで使用可能なマシンシリーズが表示されます。使用できるマシン ファミリー オプションは次のとおりです。

      • 汎用
      • コンピューティング最適化
      • メモリ最適化
      • ストレージ最適化
      • GPU

    4. [シリーズ] 列で、インスタンスのマシンシリーズを選択します。

      前の手順でマシン ファミリーとして [GPU] を選択した場合は、必要な GPU タイプを選択します。選択した GPU タイプにマシンシリーズが自動的に選択されます。

    5. [マシンタイプ] セクションで、インスタンスのマシンタイプを選択します。

  3. ナビゲーション メニューで [OS とストレージ] をクリックします。表示された [オペレーティング システムとストレージ] ペインで、次の手順でブートディスクを構成します。

    1. [変更] をクリックします。[ブートディスク] ペインが表示され、[公開イメージ] タブが表示されます。
    2. [カスタム イメージ] をクリックします。[カスタム イメージ] タブが表示されます。
    3. イメージ プロジェクトを選択するには、[変更] をクリックし、イメージを含むプロジェクトを選択します。
    4. [イメージ] リストで、インポートするイメージを選択します。
    5. [ブートディスクの種類] リストで、ブートディスクの種類を選択します。
    6. [サイズ(GB)] フィールドに、ブートディスクのサイズを指定します。
    7. 省略可: 詳細な構成オプションについては、[ 詳細設定を表示] セクションを開きます。
    8. ブートディスクのオプションを確認して [オペレーティング システムとストレージ] ペインに戻るには、[選択] をクリックします。
  4. ナビゲーション メニューで [ネットワーキング] をクリックします。表示された [ネットワーキング] ペインで、次の操作を行います。

    1. [ファイアウォール] セクションに移動します。
    2. インスタンスへの HTTP または HTTPS トラフィックを許可するには、[HTTP トラフィックを許可する] または [HTTPS トラフィックを許可する] を選択します。

      Compute Engine によってネットワーク タグがインスタンスに追加されます。また、対応する上り(内向き)ファイアウォール ルールが作成され、tcp:80(HTTP)または tcp:443(HTTPS)で着信するすべてのトラフィックが許可されます。このネットワーク タグでファイアウォール ルールがインスタンスに関連付けられます。詳細については、Cloud Next Generation Firewall のドキュメントでファイアウォール ルールの概要をご覧ください。

  5. 省略可: その他の構成オプションを指定します。詳細については、インスタンス作成時の構成オプションをご覧ください。

  6. インスタンスを作成して起動するには、[作成] をクリックします。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. gcloud compute instances create command を使用してインスタンスを作成し、--image フラグと --image-project フラグを使用してイメージ名とそのイメージが属するプロジェクトを指定します。

    gcloud compute instances create INSTANCE_NAME \
    --image=IMAGE \
    --image-project=IMAGE_PROJECT
    

    次のように置き換えます。

    • INSTANCE_NAME: 新しいインスタンスの名前
    • IMAGE: イメージの名前
    • IMAGE_PROJECT: イメージが属するプロジェクト

    コマンドが成功すると、gcloud は次の例のように新しいインスタンスのプロパティを返します。

    Created [https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b/instances/example-instance].
    NAME                 ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    example-instance     us-central1-b  e2-standard-2               10.240.0.4   104.198.53.60  RUNNING
    

Terraform

Terraform で共有イメージを使用してインスタンスを作成するプロセスは、一般公開イメージを使用してインスタンスを作成する場合と同じです。

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. [インスタンスを作成] をクリックします。
  3. 必要なパラメータを指定します。
  4. ページの上部または下部で [同等のコード] をクリックし、[Terraform] タブをクリックして Terraform コードを表示します。

REST

API で共有イメージを使用してインスタンスを作成するプロセスは、一般公開イメージを使用してインスタンスを作成する場合と同じです。

共有イメージからインスタンスを作成するには、instances.insert メソッドを使用します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
   "machineType":"zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
   "name":"VM_NAME",
   
   "disks":[
      {
         "initializeParams":{
            "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE"
         },
         "boot":true
      }
   ],
   
   
   "networkInterfaces":[
      {
         "network":"global/networks/NETWORK_NAME"
      }
   ],
   
  
   "shieldedInstanceConfig":{
      "enableSecureBoot":"ENABLE_SECURE_BOOT"
   }
}

次のように置き換えます。

  • PROJECT_ID: VM を作成するプロジェクトの ID
  • ZONE: VM を作成するゾーン
  • MACHINE_TYPE_ZONE: 新しい VM に使用するマシンタイプを含むゾーン
  • MACHINE_TYPE: 新しい VM のマシンタイプ(事前定義またはカスタム
  • VM_NAME: 新しい VM の名前
  • IMAGE_PROJECT: 共有イメージを含むプロジェクトの名前
  • IMAGE: 次のいずれかを指定します。
    • IMAGE: 共有イメージの名前。例: "sourceImage": "projects/finance-project-1234/global/images/finance-debian-image-v2"
    • IMAGE_FAMILY: カスタム イメージ ファミリーの一部として共有イメージを作成する場合、そのカスタム イメージ ファミリーを指定します。

      これにより、カスタム イメージ ファミリー内の最新の非推奨ではない OS イメージから VM が作成されます。たとえば、"sourceImage": "projects/finance-project-1234/global/images/family/finance-debian-family" を指定すると、Compute Engine はカスタム finance-debian-family イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。

  • NETWORK_NAME: VM に使用する VPC ネットワーク。default を指定して、デフォルト ネットワークを使用できます。
  • ENABLE_SECURE_BOOT: 省略可。Shielded VM 機能をサポートしているイメージを選択した場合は、Compute Engine がデフォルトで仮想トラステッド プラットフォーム モジュール(vTPM)整合性モニタリングを有効にします。Compute Engine は、デフォルトではセキュアブートを有効にしません。

    trueenableSecureBoot を指定すると、Compute Engine は 3 つの Shielded VM 機能をすべて有効にした VM を作成します。Compute Engine が VM を起動した後、Shielded VM のオプションを変更するには、VM を停止する必要があります。

次のステップ