VM インスタンスの作成と起動

このドキュメントでは、ブートディスク イメージ、ブートディスク スナップショット、コンテナ イメージを使用して仮想マシン インスタンスを作成する方法について説明します。ブートディスク イメージから VM インスタンスを作成する場合、通常のイメージか Shielded VM ベータ版のイメージを使用できます。Shielded VM イメージは、UEFI 準拠のファームウェア、セキュアブート、vTPM で保護されたメジャード ブートなどのセキュリティ機能を備えています。VM インスタンスを作成すると、Compute Engine によってそのインスタンスが自動的に起動されます。

作成プロセス時は、VM インスタンス用に複数のディスクを作成できます。作成後も、さらにディスクを追加できます。

このドキュメントでは、インスタンスを作成する基本的な方法について説明します。より具体的または複雑なインスタンスの構成については、次のリソースをご覧ください。

始める前に

イメージからのインスタンスの作成

このセクションでは、特定のオペレーティング システムのイメージからインスタンスを作成する方法について説明します。ブートディスク イメージには、ブートローダー、ブート ファイルシステム、インスタンス上で実行されるオペレーティング システムが含まれます。

上級ユーザーの場合、カスタム イメージを作成し、Compute Engine によって提供される公開イメージの代わりに使用できます。

Google Cloud Platform Console、gcloud コマンドライン ツール、または API で、イメージを使用してインスタンスを作成できます。

公開イメージからのインスタンスの作成

公開イメージは、Google、オープンソース コミュニティ、サードパーティ ベンダーによって提供され、保守されます。デフォルトで、すべてのプロジェクトがこれらのイメージにアクセスでき、これらのイメージを使用して、共通のオペレーティング システム イメージでインスタンスを作成できます。

インスタンスを作成するには、必要なオペレーティング システムのイメージ ファミリーを指定します。Compute Engine には複数の Linux ディストリビューションがあり、一部は通常のイメージとShielded VM イメージの両方で提供されます。インスタンス用にローカル SSD ストレージを選択した場合、Shielded VM の整合性のモニタリング機能は利用できません。データのシールドに vTPM を使用することもできません。利用可能なイメージ ファミリーのリストについては、公開イメージをご覧ください。

Console

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. プロジェクトを選択し、[続行] をクリックします。
  3. [インスタンスを作成] ボタンをクリックします。
  4. [名前] でインスタンスの名前を指定します。
  5. 必要に応じて、[ゾーン] でこのインスタンスのゾーンを変更します。

    注: ゾーンのリストは、複数のゾーンで各リージョンが均等に使用されるよう、各リージョン内でランダム化されています。

  6. [マシンタイプ] で、このインスタンスのマシンタイプを選択します。

  7. [ブートディスク] セクションの [変更] をクリックして、ブートディスクを構成します。
    MBR パーティションの制限を考慮して、2 TB 未満のブートディスクを作成します。

  8. [OS イメージ] タブで、イメージを選択します。
    Shielded VM イメージのみを表示するには、[Shielded VMの機能を持つイメージを表示する] を選択します。

  9. [選択] をクリックします。

  10. VM インスタンスへの HTTP または HTTPS トラフィックを許可するには、[HTTP トラフィックを許可する] または [HTTPS トラフィックを許可する] をオンにします。

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

  11. VM インスタンスにブートディスク以外のセカンダリ ディスクを追加する手順は、次のとおりです。

    1. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] セクションをクリックします。
    2. [ディスク] タブをクリックします。
    3. [追加ディスク] で [新しいディスクを追加] をクリックします。
    4. ディスクの情報を [名前]、[タイプ]、[ソースの種類]、[モード]、[削除ルール] にそれぞれ指定します。
    5. [完了] をクリックします。
    6. 必要に応じて、さらにディスクを追加します。
  12. Shielded VM をサポートするイメージを選択した場合は、そのインスタンスの Shielded VM の設定を必要に応じて変更します。

    1. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] セクションの [セキュリティ] タブをクリックします。
    2. セキュアブートを無効にする場合は、[セキュアブートをオンにします] をオフにします。セキュアブートは、ブートレベルとカーネルレベルの不正なソフトウェアとルートキットから VM インスタンスを保護します。詳細については、セキュアブートをご覧ください。
    3. Virtual Trusted Platform Module(vTPM)を無効にする場合は [vTPM をオンにします] をオフにします。vTPM を使用すると、メジャード ブートが有効になり、それによって VM の起動前と起動時の整合性が検証されます。詳細については、Virtual Trusted Platform Module(vTPM)をご覧ください。

    4. 整合性のモニタリングを無効にする場合は、[整合性のモニタリングを有効にする] をオフにします。整合性のモニタリングを使用すると、Shielded VM インスタンスの起動時の整合性を Stackdriver でモニタリングできます。詳細については、整合性モニタリングをご覧ください。

  13. [作成] ボタンをクリックしてインスタンスを作成し、開始します。

gcloud

インスタンスを作成する前に、インスタンスのブートディスクに使用するオペレーティング システム イメージを選択します。イメージ ID、イメージ ファミリー、イメージ プロジェクトを含む、Shielded VM でない公開イメージの完全なリストを表示するには、フラグを何も指定せずに gcloud compute images list コマンドを実行します。

gcloud compute images list

Shielded VM の公開イメージの完全なリストを表示するには、次のフラグを指定して gcloud compute images list コマンドを実行します。

gcloud compute images list --project gce-uefi-images --no-standard-images

イメージを選択したら、gcloud compute instances create コマンドでインスタンスを作成します。

オペレーティング システム イメージの最新バージョンを使用するには、--image-family フラグと --image-project フラグを指定します。たとえば、debian-9 はサポートが終了していない最新バージョンの Debian 9 イメージを返すイメージ ファミリーであり、debian-cloud はイメージ プロジェクトです。

イメージ ファミリーの最新のイメージを使用してインスタンスを作成します。

gcloud compute instances create [INSTANCE_NAME] \
--image-family [IMAGE_FAMILY] \
--image-project [IMAGE_PROJECT]

ここで:

レスポンスの例:

Created [https://www.googleapis.com/compute/v1/projects/myproject/zones/[ZONE]/instances/[INSTANCE_NAME]].
NAME            ZONE   MACHINE_TYPE  INTERNAL_IP   EXTERNAL_IP    STATUS
[INSTANCE_NAME] [ZONE] n1-standard-1 10.105.155.92 173.255.114.53 RUNNING

最新のバージョンではなく、特定のバージョンのイメージを使用する必要がある場合は、--image フラグと --image-project フラグを指定します。たとえば、debian-9-stretch-v20170619 Debian イメージを使用するインスタンスを作成するには、--image debian-9-stretch-v20170619--image-project debian-cloud を指定します。

特定のバージョンのイメージを使用するインスタンスを作成します。

gcloud compute instances create [INSTANCE_NAME] \
    --image [IMAGE_ID] \
    --image-project [IMAGE_PROJECT]

ここで:

  • [INSTANCE_NAME] は、新しいインスタンスの名前です。
  • [IMAGE_ID] は、特定のイメージです。
  • [IMAGE_PROJECT] は、そのイメージが属するイメージ プロジェクトです。

インスタンスを作成する際は、ブートディスク以外のセカンダリ ディスクを最大 15 個まで追加できます。作成するセカンダリ ディスクごとに --create-disk フラグを指定します。公開イメージまたはストック イメージからセカンダリ ディスクを作成するには、--create-disk フラグに image および image-project プロパティを指定します。空のディスクを作成するには、これらのプロパティを指定しないでください。ディスクの sizetype のプロパティは必要に応じて指定してください。

gcloud compute instances create [INSTANCE_NAME] \
  --image-family [IMAGE_FAMILY] \
  --image-project [IMAGE_PROJECT] \
  --create-disk image=[DISK_IMAGE],image-project=[DISK_IMAGE_PROJECT],size=[SIZE_GB],type=[DISK_TYPE]

ここで:

  • [INSTANCE_NAME] は、新しいインスタンスの名前です。
  • [IMAGE_FAMILY] は、使用可能なイメージ ファミリーのいずれかです。
  • [IMAGE_PROJECT] は、イメージが属するイメージ プロジェクトです。
  • [DISK_IMAGE] は、セカンダリ ディスクのソースイメージです。使用可能なイメージのリストを表示するには、gcloud compute images list を実行します。空のディスクを作成する場合は、ディスク イメージやイメージ プロジェクトを指定しないでください。
  • [DISK_IMAGE_PROJECT] は、ディスク イメージが属するイメージ プロジェクトです。空のディスクを作成する場合は、ディスク イメージやイメージ プロジェクトを指定しないでください。
  • [SIZE_GB] は、セカンダリ ディスクのサイズです。
  • [DISK_TYPE] は、永続ディスクのタイプ(pd-standard または pd-ssd のいずれか)です。

ディスクを使用する前に、ディスクをフォーマットしてマウントします。

Shielded VM をサポートするイメージを選択した場合は、必要に応じて次のいずれかのフラグを使用して、インスタンスの Shielded VM の設定を変更できます。

  • --no-shielded-vm-secure-boot: セキュアブートを無効にします。セキュアブートは、ブートレベルとカーネルレベルの不正なソフトウェアとルートキットから VM インスタンスを保護します。詳細については、セキュアブートをご覧ください。
  • --no-shielded-vm-vtpm: Virtual Trusted Platform Module(vTPM)を無効にします。vTPM を使用すると、メジャード ブートが有効になり、それによって VM の起動前と起動時の整合性が検証されます。詳細については、Virtual Trusted Platform Module(vTPM)をご覧ください。

  • --no-shielded-vm-integrity-monitoring: 整合性モニタリングを無効にします。整合性モニタリングを使用すると、Shielded VM インスタンスの起動時の整合性を Stackdriver でモニタリングできます。詳細については、整合性モニタリングをご覧ください。

    次の例では、セキュアブートが無効に設定された Ubuntu の Shielded VM インスタンスを作成します。

    gcloud beta compute instances create my-instance
    --image-family ubuntu-1804-uefi --image-project gce-uefi-images
    --no-shielded-vm-secure-boot

API

API でインスタンスを起動するには、次のプロパティを指定してリクエストを送信します。

  • ソースイメージ
  • ネットワーク インターフェース
  • マシンタイプ
  • VPC ネットワークがカスタムモードの VPC ネットワークである場合、インスタンスの作成先サブネットを指定する必要もあります。
  • Shielded VM をサポートするイメージを選択した場合は、次のブール値の項目をリクエスト本文で使用することにより、必要に応じてインスタンスの Shielded VM の設定を変更できます。

    • enableSecureBoot: セキュアブートを有効または無効にします。セキュアブートは、ブートレベルとカーネルレベルの不正なソフトウェアとルートキットから VM インスタンスを保護します。詳細については、セキュアブートをご覧ください。
    • enableVtpm: Virtual Trusted Platform Module(vTPM)を有効または無効にします。vTPM を使用すると、メジャード ブートが有効になり、それによって VM の起動前と起動時の整合性が検証されます。詳細については、Virtual Trusted Platform Module(vTPM)をご覧ください。

    • enableIntegrityMonitoring: 整合性モニタリングを有効または無効にします。整合性モニタリングを使用すると、Shielded VM インスタンスの実行時の起動の整合性を Stackdriver レポートでモニタリングして検証できます。詳細については、整合性モニタリングをご覧ください。

リソースのプロパティを決定したら、リクエストの本文を作成して API リクエストを作成します。API リクエストの作成と API レスポンスの処理の詳細については、API リクエストの作成とレスポンスの処理のドキュメントをご覧ください。

API リクエストの作成

API クライアント ライブラリを使用する場合、新しいインスタンスを起動するには、REST API を直接呼び出すか、または instances().insert を使用します。それぞれの方法の例を次に示します。

REST

API で、インスタンス URI に対し、同じリクエスト本文を使用した POST リクエストを作成します。追加するディスクごとに initializeParams プロパティを使用すると、VM インスタンスの作成時に、ブートディスク以外のセカンダリ ディスクを最大 15 個追加できます。公開イメージまたは非公開イメージで追加のディスクを作成します。空のディスクを追加するには、イメージソースを指定しないでください。必要に応じて、diskSizeGbdiskType プロパティを指定できます。

def addInstance(http, listOfHeaders):
  url = "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances"

  body = {
    "name": "[INSTANCE_NAME]",
    "machineType": "machineTypes/[MACHINE_TYPE]",
    "networkInterfaces": [{
      "accessConfigs": [{
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT"
       }],
      "network": "global/networks/default"
    }],
    "disks": [{
       "autoDelete": "true",
       "boot": "true",
       "type": "PERSISTENT",
       "initializeParams": {
          "sourceImage": "projects/[IMAGE_PROJECT]/global/images/family/[IMAGE]"
       }
     },
     {
       "initializeParams": {
          "diskSizeGb": "[SIZE_GB]",
          "sourceImage":"[IMAGE]"
       },
       {
       "initializeParams": {
          "diskSizeGb": "[SIZE_GB]"
       }
     }]

  bodyContentURLEncoded = urllib.urlencode(bodyContent)
  resp, content = http.request(uri=url, method="POST", body=dumps(bodyContent), headers=listOfHeaders)

  print resp
  print content

ここで:

  • [INSTANCE_NAME] はインスタンスの名前です。
  • [PROJECT_ID] はプロジェクト ID です。
  • [ZONE] は、このインスタンスのゾーンです。
  • [MACHINE_TYPE] は、インスタンスのマシンタイプです。
  • [IMAGE_PROJECT] は、イメージが属するイメージ プロジェクトdebian-cloudubuntu-os-cloud など)です。
  • [IMAGE] は、使用可能な公開イメージ ファミリーのいずれかです。たとえば、family/debian-9 を指定すると、最新バージョンの Debian 9 イメージが使用されます。または、family/ パスなしの debian-9-stretch-v20170619 など、特定のイメージ バージョンを使用することもできます。空のディスクを作成する場合は、イメージソースを指定しないでください。
  • [SIZE_GB] は、ディスクサイズです。
  • [DISK_TYPE] は、永続ディスクのタイプ(pd-standard または pd-ssd のいずれか)です。

空のセカンダリ ディスクを使用してインスタンスを作成する場合は、それらのディスクをフォーマットしてマウントし、ゲスト オペレーティング システムで使用できるようにします。

Python クライアント ライブラリ

def create_instance(compute, project, zone, name, bucket):
    # Get the latest Debian Jessie image.
    image_response = compute.images().getFromFamily(
        project='debian-cloud', family='debian-9').execute()
    source_disk_image = image_response['selfLink']

    # Configure the machine
    machine_type = "zones/%s/machineTypes/n1-standard-1" % zone
    startup_script = open(
        os.path.join(
            os.path.dirname(__file__), 'startup-script.sh'), 'r').read()
    image_url = "http://storage.googleapis.com/gce-demo-input/photo.jpg"
    image_caption = "Ready for dessert?"

    config = {
        'name': name,
        'machineType': machine_type,

        # Specify the boot disk and the image to use as a source.
        'disks': [
            {
                'boot': True,
                'autoDelete': True,
                'initializeParams': {
                    'sourceImage': source_disk_image,
                }
            }
        ],

        # Specify a network interface with NAT to access the public
        # internet.
        'networkInterfaces': [{
            'network': 'global/networks/default',
            'accessConfigs': [
                {'type': 'ONE_TO_ONE_NAT', 'name': 'External NAT'}
            ]
        }],

        # Allow the instance to access cloud storage and logging.
        'serviceAccounts': [{
            'email': 'default',
            'scopes': [
                'https://www.googleapis.com/auth/devstorage.read_write',
                'https://www.googleapis.com/auth/logging.write'
            ]
        }],

        # Metadata is readable from the instance and allows you to
        # pass configuration from deployment scripts to instances.
        'metadata': {
            'items': [{
                # Startup script is automatically executed by the
                # instance upon startup.
                'key': 'startup-script',
                'value': startup_script
            }, {
                'key': 'url',
                'value': image_url
            }, {
                'key': 'text',
                'value': image_caption
            }, {
                'key': 'bucket',
                'value': bucket
            }]
        }
    }

    return compute.instances().insert(
        project=project,
        zone=zone,
        body=config).execute()

カスタム イメージからのインスタンスの作成

カスタム イメージは、自分のプロジェクトにのみ属します。カスタム イメージでインスタンスを作成するには、事前にカスタム イメージを作成しておく必要があります。カスタム イメージの作成方法の詳細については、カスタム イメージの作成をご覧ください。

Console

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. プロジェクトを選択し、[続行] をクリックします。
  3. [インスタンスを作成] ボタンをクリックします。
  4. [名前] でインスタンスの名前を指定します。
  5. 必要に応じて、[ゾーン] でこのインスタンスのゾーンを変更します。

    注: ゾーンのリストは、複数のゾーンで各リージョンが均等に使用されるよう、各リージョン内でランダム化されています。

  6. [マシンタイプ] で、このインスタンスのマシンタイプを選択します。

  7. [ブートディスク] セクションの [変更] をクリックして、ブートディスクを構成します。
    MBR パーティションの制限を考慮して、2 TB 未満のブートディスクを作成します。

  8. [カスタム イメージ] タブを選択します。

  9. プロジェクトがプルダウン メニューで選択されていることを確認します。

  10. 必要なイメージを選択し、[選択] ボタンをクリックします。

  11. VM インスタンスへの HTTP または HTTPS トラフィックを許可するには、[HTTP トラフィックを許可する] または [HTTPS トラフィックを許可する] をオンにします。

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

  12. VM インスタンスにブートディスク以外のセカンダリ ディスクを追加する手順は、次のとおりです。

    1. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] をクリックします。
    2. [ディスク] タブを選択します。
    3. [追加ディスク] で [新しいディスクを追加] をクリックします。
    4. ディスクの情報を [名前]、[タイプ]、[ソースの種類]、[モード]、[削除ルール] にそれぞれ指定します。
    5. [完了] をクリックします。
    6. 必要に応じて、さらにディスクを追加します。
  13. [作成] ボタンをクリックしてインスタンスを作成し、開始します。

gcloud

gcloud compute instances create コマンドライン ツールで、カスタム イメージを使用するインスタンスを作成します。

gcloud compute instances create [INSTANCE_NAME] \
--image [IMAGE_NAME] \
--image-family [IMAGE_FAMILY]

ここで:

  • [INSTANCE_NAME] はインスタンス名です。
  • [IMAGE_NAME] は、イメージ名です。
  • [IMAGE] は、オプション フィールドです。非公開または公開イメージを使用します。イメージを指定しないと、ディスクは空になります。

カスタム イメージをイメージ ファミリーの一部として作成した場合は、イメージ名の代わりにイメージ ファミリーを指定してください。そうすると、インスタンスは、イメージ ファミリー内の非推奨でない最新のイメージを自動的に使用します。

インスタンスを作成する際は、ブートディスク以外のセカンダリ ディスクを最大 15 個まで追加できます。作成するセカンダリ ディスクごとに --create-disk フラグを指定します。公開イメージまたはストック イメージからセカンダリ ディスクを作成するには、--create-disk フラグに image および image-project プロパティを指定します。空のディスクを作成するには、これらのプロパティを指定しないでください。ディスクの sizetype のプロパティは必要に応じて指定してください。

gcloud compute instances create [INSTANCE_NAME] \
  --image-family [IMAGE_FAMILY] \
  --image-project [IMAGE_PROJECT] \
  --create-disk image=[DISK_IMAGE],image-project=[DISK_IMAGE_PROJECT],size=[SIZE_GB],type=[DISK_TYPE]

ここで:

  • [INSTANCE_NAME] は、新しいインスタンスの名前です。
  • [IMAGE_FAMILY] は、使用可能なイメージ ファミリーのいずれかです。
  • [IMAGE_PROJECT] は、イメージが属するイメージ プロジェクトです。
  • [DISK_IMAGE] は、セカンダリ ディスクのソースイメージです。使用可能なイメージのリストを表示するには、gcloud compute images list を実行します。空のディスクを作成する場合は、ディスク イメージやイメージ プロジェクトを指定しないでください。
  • [DISK_IMAGE_PROJECT] は、ディスク イメージが属するイメージ プロジェクトです。空のディスクを作成する場合は、ディスク イメージやイメージ プロジェクトを指定しないでください。
  • [SIZE_GB] は、セカンダリ ディスクのサイズです。
  • [DISK_TYPE] は、永続ディスクのタイプ(pd-standard または pd-ssd のいずれか)です。

ディスクを使用する前に、ディスクをフォーマットしてマウントします。

API

API でカスタム イメージを使用してインスタンスを作成するプロセスは、一般公開イメージを使用してインスタンスを作成する場合と同じです。sourceImage URI に、独自のプロジェクト ID とイメージ名を指定します。

追加するディスクごとに initializeParams プロパティを使用すると、VM インスタンスの作成時に、ブートディスク以外のセカンダリ ディスクを最大 15 個作成できます。公開イメージまたは非公開イメージを使用した追加のディスクを作成します。空のディスクを追加するには、sourceImage 値のない initializeParams エントリを定義します。

...
"initializeParams" :{
   "sourceImage": "global/images/[IMAGE_NAME]"
},
{
"initializeParams": {
   "diskSizeGb": "[SIZE_GB]",
   "sourceImage": "[IMAGE]",
   "diskType": "[DISK_TYPE]"
 },
 {
 "initializeParams": {
 "diskSizeGb": "[SIZE_GB]",
 "diskType": "[DISK_TYPE]"
 }
}...]

ここで:

  • [PROJECT_ID] はプロジェクト ID です。
  • [IMAGE_NAME] は、特定のイメージ(debian-9-stretch-v20170619 など)です。イメージ ファミリーを指定することもできます。たとえば、family/debian-9 を指定すると、最新バージョンの Debian 9 イメージが使用されます。
  • [IMAGE] は、セカンダリ ディスクのソースイメージです。空のディスクを作成する場合は、イメージソースを指定しないでください。
  • [SIZE_GB] は、ディスクサイズです。
  • [DISK_TYPE] は、永続ディスクのタイプ(pd-standard または pd-ssd のいずれか)です。

ディスクを使用する前に、ディスクをフォーマットしてマウントします。

共有するイメージを使用したインスタンスの作成

別のユーザーとイメージを共有している場合、そのイメージを使用して新しいインスタンスを作成できます。

Console

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. プロジェクトを選択し、[続行] をクリックします。
  3. [インスタンスを作成] ボタンをクリックします。
  4. [名前] でインスタンスの名前を指定します。
  5. 必要に応じて、[ゾーン] でこのインスタンスのゾーンを変更します。

  6. [マシンタイプ] で、このインスタンスのマシンタイプを選択します。

  7. [ブートディスク] セクションの [変更] をクリックして、ブートディスクを構成します。

    MBR パーティションの制限を考慮して、2 TB 未満のブートディスクを作成します。

  8. [カスタム イメージ] タブを選択します。

  9. プルダウンからイメージ プロジェクトを選択します。

  10. 必要なイメージを選択し、[選択] ボタンをクリックします。

  11. VM インスタンスへの HTTP または HTTPS トラフィックを許可するには、[HTTP トラフィックを許可する] または [HTTPS トラフィックを許可する] をオンにします。

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

  12. VM インスタンスにブートディスク以外のセカンダリ ディスクを追加する手順は、次のとおりです。

    1. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] をクリックします。
    2. [ディスク] タブを選択します。
    3. [追加ディスク] で [新しいディスクを追加] をクリックします。
    4. ディスクの情報を [名前]、[タイプ]、[ソースの種類]、[モード]、[削除ルール] にそれぞれ指定します。
    5. [完了] をクリックします。
    6. 必要に応じて、さらにディスクを追加します。
  13. [作成] ボタンをクリックしてインスタンスを作成し、開始します。

gcloud

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

gcloud compute instances create [INSTANCE_NAME] \
    --image [IMAGE] \
    --image-project [IMAGE_PROJECT]

ここで:

  • [INSTANCE_NAME] は、新しいインスタンスの名前です。
  • [IMAGE] は、イメージ名です。
  • [IMAGE_PROJECT] は、イメージが属するプロジェクトです。

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

Created [https://www.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  n1-standard-1               10.240.0.4   104.198.53.60  RUNNING</pre>

インスタンスを作成する際は、ブートディスク以外のセカンダリ ディスクを最大 15 個まで追加できます。作成するセカンダリ ディスクごとに --create-disk フラグを指定します。公開イメージまたはストック イメージからセカンダリ ディスクを作成するには、--create-disk フラグに image および image-project プロパティを指定します。空のディスクを作成するには、これらのプロパティを指定しないでください。ディスクの sizetype のプロパティは必要に応じて指定してください。

gcloud compute instances create [INSTANCE_NAME] \
--image-family [IMAGE_FAMILY] \
--image-project [IMAGE_PROJECT] \
--create-disk image=[DISK_IMAGE],image-project=[DISK_IMAGE_PROJECT],size=[SIZE_GB],type=[DISK_TYPE]

ここで:

  • [INSTANCE_NAME] は、新しいインスタンスの名前です。
  • [IMAGE_FAMILY] は、使用可能なイメージ ファミリーのいずれかです。
  • [IMAGE_PROJECT] は、イメージが属するイメージ プロジェクトです。
  • [DISK_IMAGE] は、セカンダリ ディスクのソースイメージです。使用可能なイメージのリストを表示するには、gcloud compute images list を実行します。空のディスクを作成する場合は、ディスク イメージやイメージ プロジェクトを指定しないでください。
  • [DISK_IMAGE_PROJECT] は、ディスク イメージが属するイメージ プロジェクトです。空のディスクを作成する場合は、ディスク イメージやイメージ プロジェクトを指定しないでください。
  • [SIZE_GB] は、セカンダリ ディスクのサイズです。
  • [DISK_TYPE] は、永続ディスクのタイプ(pd-standard または pd-ssd のいずれか)です。

ディスクを使用する前に、ディスクをフォーマットしてマウントします。

API

API の手順に沿って公開イメージからインスタンスを作成しますが、リクエストの本文で image フィールドを指定します。追加するすべてのディスクに initalizeParams フィールドを指定すると、ブートディスク以外のセカンダリ ディスクを最大 15 個まで追加できます。空のディスクを追加するには、イメージソースを指定しないでください。必要に応じて、diskSizeGbdiskType プロパティを指定できます。

...
image: "projects/[PROJECT_ID]/global/images/[IMAGE]

{
 "initializeParams": {
    "diskSizeGb": "[SIZE_GB]",
    "sourceImage": "[IMAGE]"
       }
   {
  "initializeParams": {
  "diskSizeGb": "[SIZE_GB]"
   }
 }...]

ここで:

  • [PROJECT_ID] はイメージが含まれるプロジェクトです。
  • [IMAGE] は、ソースイメージです。
  • [SIZE_GB] は、ディスクサイズです。
  • [IMAGE] は、セカンダリ ディスクのソースイメージです。空のディスクを作成する場合は、イメージソースを指定しないでください。
  • [DISK_TYPE] は、永続ディスクのタイプ(pd-standard または pd-ssd のいずれか)です。

ディスクを使用する前に、ディスクをフォーマットしてマウントします。

スナップショットからのインスタンスの作成

スナップショットを使用してブート永続ディスクをバックアップした場合は、そのスナップショットを使用して新しいインスタンスを作成できます。

Console

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. プロジェクトを選択し、[続行] をクリックします。
  3. [インスタンスを作成] ボタンをクリックします。
  4. [名前] でインスタンスの名前を指定します。
  5. 必要に応じて、[ゾーン] でこのインスタンスのゾーンを変更します。

  6. [マシンタイプ] で、このインスタンスのマシンタイプを選択します。

  7. [ブートディスク] セクションの [変更] をクリックして、ブートディスクを構成します。

    MBR パーティションの制限を考慮して、2 TB 未満のブートディスクを作成します。

  8. [スナップショット] タブをクリックし、リストからスナップショットを選択します。

  9. [選択] をクリックします。

  10. VM インスタンスへの HTTP または HTTPS トラフィックを許可するには、[HTTP トラフィックを許可する] または [HTTPS トラフィックを許可する] をオンにします。

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

  11. VM インスタンスにブートディスク以外のセカンダリ ディスクを追加する手順は、次のとおりです。

    1. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] をクリックします。
    2. [ディスク] タブを選択します。
    3. [追加ディスク] で [新しいディスクを追加] をクリックします。
    4. ディスクの情報を [名前]、[タイプ]、[ソースの種類]、[モード]、[削除ルール] にそれぞれ指定します。
    5. [完了] をクリックします。
    6. 必要に応じて、さらにディスクを追加します。
  12. [作成] ボタンをクリックしてインスタンスを作成し、開始します。

gcloud

gcloud コマンドライン ツールを使用する場合、Console と同じようにスナップショットを使用してインスタンスを直接作成することはできません。まず、スナップショットから新しいスタンドアロンのブート永続ディスクを作成します。次に、そのディスクを使用して新しいインスタンスを作成します。

  1. gcloud compute disks create コマンドを使用して、スナップショットからスタンドアロンのブート永続ディスクを作成します。

    gcloud compute disks create [DISK_NAME] --source-snapshot [SNAPSHOT_NAME]
    
  2. gcloud compute instances create コマンドを使用して新しいインスタンスを作成し、--disk フラグと boot=yes プロパティでディスクを接続します。

    gcloud compute instances create [INSTANCE_NAME] --disk name=[DISK_NAME],boot=yes
    

    インスタンスを作成する際は、ブートディスク以外のセカンダリ ディスクを最大 15 個まで追加できます。作成するセカンダリ ディスクごとに --create-disk フラグを指定します。公開イメージまたはストック イメージからセカンダリ ディスクを作成するには、--create-disk フラグに image および image-project プロパティを指定します。空のディスクを作成するには、これらのプロパティを指定しないでください。ディスクの sizetype のプロパティは必要に応じて指定してください。

    gcloud compute instances create [INSTANCE_NAME] \
       --image-family [IMAGE_FAMILY] \
       --image-project [IMAGE_PROJECT] \
       --create-disk image=[DISK_IMAGE],image-project=[DISK_IMAGE_PROJECT],size=[SIZE_GB],type=[DISK_TYPE]
    

    ここで:

    • [INSTANCE_NAME] は、新しいインスタンスの名前です。
    • [IMAGE_FAMILY] は、使用可能なイメージ ファミリーのいずれかです。
    • [IMAGE_PROJECT] は、イメージが属するイメージ プロジェクトです。
    • [DISK_IMAGE] は、セカンダリ ディスクのソースイメージです。使用可能なイメージのリストを表示するには、gcloud compute images list を実行します。空のディスクを作成する場合は、ディスク イメージやイメージ プロジェクトを指定しないでください。
    • [DISK_IMAGE_PROJECT] は、ディスク イメージが属するイメージ プロジェクトです。空のディスクを作成する場合は、ディスク イメージやイメージ プロジェクトを指定しないでください。
    • [SIZE_GB] は、セカンダリ ディスクのサイズです。
    • [DISK_TYPE] は、永続ディスクのタイプ(pd-standard または pd-ssd のいずれか)です。

ディスクを使用する前に、ディスクをフォーマットしてマウントします。

API

API では、Console と同じようにスナップショットを使用してインスタンスを直接作成することはできません。まず、スナップショットから新しいスタンドアロンのブート永続ディスクを作成します。次に、そのディスクを使用して新しいインスタンスを作成します。

制限事項

  • ブート永続ディスクとして使用できる永続ディスクは 1 つだけです。
  • ブート永続ディスクを、そのインスタンスの最初のディスクとして接続する必要があります。
  • source プロパティを指定する場合、initializeParams プロパティを同時に指定することはできません。source はブート永続ディスクがすでに存在することを示すのに対し、initializeParams プロパティは Compute Engine によって新しいブート永続ディスクを作成する必要があることを示します。

インスタンスをスナップショットから作成するには:

  1. スナップショットからスタンドアロンのブート永続ディスクを作成します

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks
    
    {
      "name": "[DISK_NAME]",
      "sourceSnapshot": "zones/[ZONE]/snapshots/[SNAPSHOT_NAME]"
    }
    
  2. 新しいインスタンスを作成する際にディスクを接続します。リクエストの本文に、新しいインスタンスを作成するためのプロパティを指定します。disks プロパティに、接続する永続ディスクへの URL を含む source フィールドを含めます。ブートディスク以外のセカンダリ ディスクを最大 15 個まで追加するには、すべてのディスクに initializeParams プロパティを使用します。空のディスクを追加するには、ソースイメージを含めないでください。必要に応じて、diskSizeGbdiskType プロパティを指定できます。

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances
    
    {
      "name": "[INSTANCE_NAME]",
      "machineType": "machineTypes/[MACHINE_TYPE]"
      "networkInterfaces": [{
        "accessConfigs": [{
          "type": "ONE_TO_ONE_NAT",
          "name": "External NAT"
         }],
        "network": "global/networks/default"
      }],
      "disks": [{
         "source": "zones/[ZONE]/disks/[DISK_NAME]",
         "boot": true
       }],
       "initializeParams": [{
          "diskSizeGb": "[SIZE_GB]",
          "sourceImage": "[IMAGE]"
        }
       {
       "initializeParams": {
       "diskSizeGb": "[SIZE_GB]"
       }
    }...]
    

    ここで:

    • [IMAGE] は、セカンダリ ディスクのソースイメージです。空のディスクを作成する場合は、イメージソースを指定しないでください。
    • [SIZE_GB] は、ディスクサイズです。
    • [DISK_TYPE] は、永続ディスクのタイプ(pd-standard または pd-ssd のいずれか)です。

ディスクを使用する前に、ディスクをフォーマットしてマウントします。

コンテナ イメージからのインスタンスの作成

Compute Engine インスタンスに対してコンテナをデプロイして起動するには、インスタンスを作成するときにコンテナ イメージ名とオプションの構成パラメータを指定します。Compute Engine により、Docker がインストールされた最新バージョンの Container-Optimized OS 公開イメージを使用してインスタンスが作成されます。次に、VM の起動時に Compute Engine によりコンテナが起動されます。詳細については、VM へのコンテナのデプロイをご覧ください。

Console

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. [インスタンスを作成] をクリックします。
  3. [名前] でインスタンスの名前を指定します。
  4. [コンテナ] セクションで、[この VM インスタンスにコンテナ イメージをデプロイする] チェックボックスをオンにします。
  5. [コンテナ イメージ] で使用するコンテナ イメージを指定します。
    • たとえば、Cloud Launcher から NGINX 1.12 コンテナ イメージを選択するには、gcr.io/cloud-marketplace/google/nginx1:1.12 を指定できます。
    • Docker Hub のコンテナ イメージを使用する場合は、常に完全な Docker イメージ名を指定します。たとえば、Apache コンテナ イメージをデプロイするには、イメージ名 docker.io/httpd:2.4 を指定します。
  6. 必要に応じて、[コンテナの詳細オプション] をクリックします。詳細については、コンテナを実行する際のオプションの構成をご覧ください。
  7. [作成] をクリックしてインスタンスを作成し、インスタンスを起動して、コンテナを起動します。

gcloud

gcloud compute instances create-with-container コマンドを使用します。

gcloud compute instances create-with-container [INSTANCE_NAME] \
     --container-image [CONTAINER_IMAGE]

ここで:

  • [INSTANCE_NAME] は、新しいインスタンスの名前です。
  • [CONTAINER_IMAGE] は、コンテナ イメージ名です。

たとえば、次のコマンドは、コンテナ イメージ gcr.io/cloud-marketplace/google/nginx1:1.12 を起動して実行する nginx-vm という名前の新しい VM インスタンスを作成します。

gcloud compute instances create-with-container nginx-vm \
    --container-image gcr.io/cloud-marketplace/google/nginx1:1.12

Docker Hub のコンテナ イメージを使用する場合は、常に完全な Docker イメージ名を指定します。たとえば、Apache コンテナ イメージをデプロイするには、イメージ名 docker.io/httpd:2.4 を指定します。

その他の Google Cloud Platform サービスにアクセスするためのインスタンスの作成

その他の Google Cloud Platform サービスにアクセスする必要がある仮想マシン インスタンスでアプリケーションを実行する場合は、インスタンスの作成前にサービス アカウントを作成し、サービス アカウントとして実行されるようにインスタンスを設定する手順を実施します。サービス アカウントは、他の Google Cloud Platform サービスにアクセスするためにアプリケーション コードで使用できる認証情報を持つ特別なアカウントです。

サービス アカウントの詳細については、サービス アカウントの概要をご覧ください。

特定のサブネットでのインスタンスの作成

デフォルトでは、Google Cloud Platform(GCP)はプロジェクトごとに default という名前の自動モードの VPC ネットワークを作成します。ネットワークの詳細を指定せずにインスタンスを作成すると、Compute Engine ではデフォルトの VPC ネットワークと、インスタンスと同じリージョンにある自動サブネットが使用されます。

別のネットワークや、自動モードまたはカスタムモードの VPC ネットワーク内に手動で作成したサブネットを使用するには、インスタンスの作成時にそのサブネットを指定する必要があります。

Console

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. プロジェクトを選択し、[続行] をクリックします。
  3. [インスタンスを作成] ボタンをクリックします。
  4. [名前] でインスタンスの名前を指定します。
  5. 必要に応じて、[ゾーン] でこのインスタンスのゾーンを変更します。

  6. VM インスタンスへの HTTP または HTTPS トラフィックを許可するには、[HTTP トラフィックを許可する] または [HTTPS トラフィックを許可する] をオンにします。

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

  7. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] セクションを展開します。

  8. [ネットワーキング] タブの [ネットワーク インターフェース] で、ネットワークの詳細を指定します。

    1. [ネットワーク] フィールドで、作成しておいたサブネットを含む VPC ネットワークを選択します。
    2. [サブネット] フィールドで、インスタンスで使用するサブネットを選択します。
  9. VM インスタンスにブートディスク以外のセカンダリ ディスクを追加する手順は、次のとおりです。

    1. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] をクリックします。
    2. [ディスク] タブを選択します。
    3. [追加ディスク] で [新しいディスクを追加] をクリックします。
    4. ディスクの情報を [名前]、[タイプ]、[ソースの種類]、[モード]、[削除ルール] にそれぞれ指定します。
    5. [完了] をクリックします。
    6. 必要に応じて、さらにディスクを追加します。
  10. [作成] ボタンをクリックしてインスタンスを作成し、開始します。

gcloud

gcloud コマンドライン ツールを使用する場合は、スナップショットまたはイメージからインスタンスを作成するのと同じ手順に従い、gcloud compute instances create コマンドを実行する際に --subnet [SUBNET_NAME] フラグと --zone [ZONE_NAME] フラグを追加します。

gcloud compute instances create [INSTANCE_NAME] --subnet [SUBNET_NAME] \
--zone [ZONE_NAME]

ここで:

  • [INSTANCE_NAME] はインスタンス名です。
  • [SUBNET_NAME] はサブネット名です。ネットワークは指定したサブネットから推測されます。
  • [ZONE_NAME] はインスタンスを作成するゾーンの名前(europe-west1-b など)です。インスタンスのリージョンはこのゾーンから推測されます。

インスタンスを作成する際は、ブートディスク以外のセカンダリ ディスクを最大 15 個まで追加できます。作成するセカンダリ ディスクごとに --create-disk フラグを指定します。公開イメージまたはストック イメージからセカンダリ ディスクを作成するには、--create-disk フラグに image および image-project プロパティを指定します。空のディスクを作成するには、これらのプロパティを指定しないでください。ディスクの sizetype のプロパティは必要に応じて指定してください。

gcloud compute instances create [INSTANCE_NAME] \
--subnet [SUBNET_NAME] \
--zone [ZONE_NAME] \
--image-family [IMAGE_FAMILY] \
--image-project [IMAGE_PROJECT] \
--create-disk image=[DISK_IMAGE],image-project=[DISK_IMAGE_PROJECT],size=[SIZE_GB],type=[DISK_TYPE]

ここで:

  • [INSTANCE_NAME] は、新しいインスタンスの名前です。
  • [SUBNET_NAME] はサブネット名です。
  • [ZONE_NAME] はインスタンスを作成するゾーンの名前(europe-west1-b など)です。
  • [IMAGE_FAMILY] は、使用可能なイメージ ファミリーのいずれかです。
  • [IMAGE_PROJECT] は、イメージが属するイメージ プロジェクトです。
  • [DISK_IMAGE] は、セカンダリ ディスクのソースイメージです。使用可能なイメージのリストを表示するには、gcloud compute images list を実行します。空のディスクを作成する場合は、ディスク イメージやイメージ プロジェクトを指定しないでください。
  • [DISK_IMAGE_PROJECT] は、ディスク イメージが属するイメージ プロジェクトです。空のディスクを作成する場合は、ディスク イメージやイメージ プロジェクトを指定しないでください。
  • [SIZE_GB] は、セカンダリ ディスクのサイズです。
  • [DISK_TYPE] は、永続ディスクのタイプ(pd-standard または pd-ssd のいずれか)です。

ディスクを使用する前に、ディスクをフォーマットしてマウントします。

API

API の手順に沿ってスナップショットまたはイメージからインスタンスを作成しますが、リクエストの本文で subnet フィールドを指定します。ブートディスク以外のセカンダリ ディスクを最大 15 個まで追加するには、作成するすべてのディスクに initializeParams プロパティを使用します。空のディスクを追加するには、ソースイメージを含めないでください。必要に応じて、diskSizeGbdiskType プロパティを指定できます。

...
"networkInterfaces": [
{
  "network": "global/networks/[NETWORK_NAME]",
  "subnetwork": "regions/[REGION]/subnetworks/[SUBNET_NAME]",
  "accessConfigs":
    {
      "name": "External NAT",
      "type": "ONE_TO_ONE_NAT"
    }
    {
      "initializeParams": {
         "diskSizeGb": "[SIZE_GB]",
         "sourceImage": "[IMAGE]"
    {
      "initializeParams": {
      "diskSizeGb": "[SIZE_GB]"
     }
 }...]

ここで:

  • [IMAGE] は、セカンダリ ディスクのソースイメージです。空のディスクを作成する場合は、イメージソースを指定しないでください。
  • [SIZE_GB] は、ディスクサイズです。
  • [DISK_TYPE] は、永続ディスクのタイプ(pd-standard または pd-ssd のいずれか)です。

ディスクを使用する前に、ディスクをフォーマットしてマウントします。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント