互いに独立した同一の仮想マシン(VM)インスタンスを多数作成する場合は、Google Cloud CLI または Compute Engine API を使用して VM を一括作成します。これらの VM は、リージョン内のすべてのゾーンに作成することも、特定のゾーンに分散して作成することもできます。
詳細と関連する制限事項については、VM の一括作成についてをご覧ください。
始める前に
- 作成する予定の VM と関連リソースについては、十分な割り当てと必要な権限があることを確認してください。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- プロジェクトに対する
compute.instances.create
-
カスタム イメージを使用して VM を作成する: イメージに対する
compute.images.useReadOnly
-
スナップショットを使用して VM を作成する: スナップショットに対する
compute.snapshots.useReadOnly
-
インスタンス テンプレートを使用して VM を作成する: インスタンス テンプレートに対する
compute.instanceTemplates.useReadOnly
- VM にレガシー ネットワークを割り当てる: プロジェクトに対する
compute.networks.use
-
VM の静的 IP アドレスを指定する: プロジェクトに対する
compute.addresses.use
-
レガシー ネットワークを使用する際に VM に外部 IP アドレスを割り当てる: プロジェクトに対する
compute.networks.useExternalIp
- VM のサブネットを指定する: プロジェクトまたは選択したサブネットに対する
compute.subnetworks.use
-
VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する
compute.subnetworks.useExternalIp
-
VM の VM インスタンス メタデータを設定する: プロジェクトに対する
compute.instances.setMetadata
-
VM にタグを設定する: VM に対する
compute.instances.setTags
-
VM にラベルを設定する: VM に対する
compute.instances.setLabels
-
VM が使用するサービス アカウントを設定する: VM に対する
compute.instances.setServiceAccount
-
VM 用の新しいディスクを作成する: プロジェクトに対する
compute.disks.create
-
既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する
compute.disks.use
-
既存のディスクを読み取り専用モードでアタッチする: ディスクに対する
compute.disks.useReadOnly
NAME_PATTERN: VM の名前パターン。Compute Engine の一連のハッシュ(
#
)文字を使用して、一連の数値に置き換えます。たとえば、名前パターンにvm-#
を使用すると、vm-1
やvm-2
といった名前の VM が--count
で指定された VM の数まで生成されます。この数は、名前パターンで許可されている VM の数以下にする必要があります。名前パターンを使用すると、Compute Engine は以前のリクエストから作成された既存の VM の名前を確認して名前の競合を回避しようとします。
PREDEFINED_NAMES: 作成する VM の事前定義名のリスト。このフラグを使用して
COUNT
を指定する場合、COUNT
は指定された名前の数と同じである必要があります。REGION: VM を作成するリージョン。
COUNT: 作成する VM の数。これは、
NAME_PATTERN
によって許可されている VM の数以下である必要があります。--predefined-names
を使用している場合、COUNT
を指定する必要はありませんが、指定する場合は、指定した名前の数と同じである必要があります。MIN_COUNT: 作成する VM の最小数。次の表に、このフラグの設定に応じたリクエストの動作を示します。
値 説明 未設定 デフォルト値は COUNT
です。Compute Engine がCOUNT
で指定された数の VM を作成できない場合、リクエストは失敗し、VM は作成されません。1
Compute Engine は、できるだけ多くの VM を COUNT
まで作成します。1
以上、COUNT
未満Compute Engine は、少なくとも MIN_COUNT
台の VM、最大COUNT
台の VM を作成します。MIN_COUNT
台の VM を作成できない場合、リクエストは失敗し、VM は作成されません。LOCATION_POLICY: リージョン内に含めるゾーンまたは除外するゾーン。ゾーンをキー、ポリシーを値とする Key-Value ペアのリストを使用します。ポリシーの有効な値は、デフォルトの
allow
とdeny
です。このフラグの値の例を次に示します。--location-policy=us-east1-b=allow,us-east1-c=deny
TARGET_SHAPE: 指定されたゾーンでの VM の分布。
--location-policy
フラグを使用してゾーンを指定します。このフラグの有効な値を次の表に示します。値 説明 ANY_SINGLE_ZONE
単一のゾーンに VM の配置を適用し、未使用の予約の使用を優先します。これは、ゾーンをまたぐ下り(外向き)ネットワークを回避したり、ネットワーク レイテンシを短縮したりするために使用します。これがデフォルト値です。 BALANCED
VM をリージョン内のすべてのゾーンに均等に分散しようとします。 ANY
リージョン内の複数のゾーンに VM を分散できます。使用可能なリソースがあり、未使用のゾーン予約を最大化するゾーンを選択します。 PROJECT_ID: プロジェクト ID。
REGION: VM を作成するリージョン。
NAME_PATTERN: VM の名前パターン。これを指定するか、
perInstanceProperties
を指定します。Compute Engine の一連のハッシュ(#
)文字を使用して、一連の数値に置き換えます。たとえば、名前パターンにvm-#
を使用すると、vm-1
やvm-2
といった名前の VM が--count
で指定された VM の数まで生成されます。この数は、名前パターンで許可されている VM の数以下にする必要があります。名前パターンを使用すると、Compute Engine は以前のリクエストから作成された既存の VM の名前を確認して名前の競合を回避しようとします。
PREDEFINED_NAME_1、PREDEFINED_NAME_2、...: 作成する VM の事前定義名のリスト。これを指定するか、
namePattern
を指定します。このフラグを使用してCOUNT
を指定する場合、COUNT
は指定された名前の数と同じである必要があります。COUNT: 作成する VM の数。これは、
NAME_PATTERN
によって許可されている VM の数以下である必要があります。perInstanceProperties
を使用している場合、COUNT
を指定する必要はありませんが、指定する場合は、指定した名前の数と同じである必要があります。MIN_COUNT: 作成する VM の最小数。次の表に、このフラグの設定に応じたリクエストの動作を示します。
値 説明 未設定 デフォルト値は COUNT
です。Compute Engine がCOUNT
で指定された数の VM を作成できない場合、リクエストは失敗し、VM は作成されません。1
Compute Engine は、できるだけ多くの VM を COUNT
まで作成します。1
以上、COUNT
未満Compute Engine は、少なくとも MIN_COUNT
台の VM、最大COUNT
台の VM を作成します。MIN_COUNT
台の VM を作成できない場合、リクエストは失敗し、VM は作成されません。LOCATION_POLICY: リージョン内に含めるゾーンまたは除外するゾーン。ゾーンをキー、ポリシーを値とする Key-Value ペアのリストを使用します。ポリシーの有効な値は、デフォルトの
ALLOW
とDENY
です。このフィールドの値の例を次に示します。"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_SHAPE: 指定されたゾーンでの VM の分布。
locationPolicy
フィールドを使用してゾーンを指定します。このフィールドの有効な値を次の表に示します。値 説明 ANY_SINGLE_ZONE
単一のゾーンに VM の配置を適用し、未使用の予約の使用を優先します。これは、ゾーンをまたぐ下り(外向き)ネットワークを回避したり、ネットワーク レイテンシを短縮したりするために使用します。これがデフォルト値です。 BALANCED
VM をリージョン内のすべてのゾーンに均等に分散しようとします。 ANY
リージョン内の複数のゾーンに VM を分散できます。使用可能なリソースがあり、未使用のゾーン予約を最大化するゾーンを選択します。 NAME_PATTERN: VM の名前パターン。Compute Engine の一連のハッシュ(
#
)文字を使用して、一連の数値に置き換えます。たとえば、名前パターンにvm-#
を使用すると、vm-1
やvm-2
といった名前の VM が--count
で指定された VM の数まで生成されます。この数は、名前パターンで許可されている VM の数以下にする必要があります。名前パターンを使用すると、Compute Engine は以前のリクエストから作成された既存の VM の名前を確認して名前の競合を回避しようとします。
PREDEFINED_NAMES: 作成する VM の事前定義名のリスト。このフラグを使用して
COUNT
を指定する場合、COUNT
は指定された名前の数と同じである必要があります。ZONE: VM を作成するゾーン。
COUNT: 作成する VM の数。これは、
NAME_PATTERN
によって許可されている VM の数以下である必要があります。--predefined-names
を使用している場合、COUNT
を指定する必要はありませんが、指定する場合は、指定した名前の数と同じである必要があります。MIN_COUNT: 作成する VM の最小数。次の表に、このフラグの設定に応じたリクエストの動作を示します。
値 説明 未設定 デフォルト値は COUNT
です。Compute Engine がCOUNT
で指定された数の VM を作成できない場合、リクエストは失敗し、VM は作成されません。1
Compute Engine は、できるだけ多くの VM を COUNT
まで作成します。1
以上、COUNT
未満Compute Engine は、少なくとも MIN_COUNT
台の VM、最大COUNT
台の VM を作成します。MIN_COUNT
台の VM を作成できない場合、リクエストは失敗し、VM は作成されません。PROJECT_ID: プロジェクト ID。
ZONE: VM を作成するゾーン。
NAME_PATTERN: VM の名前パターン。これを指定するか、
perInstanceProperties
を指定します。Compute Engine の一連のハッシュ(#
)文字を使用して、一連の数値に置き換えます。たとえば、名前パターンにvm-#
を使用すると、vm-1
やvm-2
といった名前の VM が--count
で指定された VM の数まで生成されます。この数は、名前パターンで許可されている VM の数以下にする必要があります。名前パターンを使用すると、Compute Engine は以前のリクエストから作成された既存の VM の名前を確認して名前の競合を回避しようとします。
PREDEFINED_NAME_1、PREDEFINED_NAME_2、...: 作成する VM の事前定義名のリスト。これを指定するか、
namePattern
を指定します。このフラグを使用してCOUNT
を指定する場合、COUNT
は指定された名前の数と同じである必要があります。COUNT: 作成する VM の数。これは、
NAME_PATTERN
によって許可されている VM の数以下である必要があります。perInstanceProperties
を使用している場合、COUNT
を指定する必要はありませんが、指定する場合は、指定した名前の数と同じである必要があります。MIN_COUNT: 作成する VM の最小数。次の表に、このフラグの設定に応じたリクエストの動作を示します。
値 説明 未設定 デフォルト値は COUNT
です。Compute Engine がCOUNT
で指定された数の VM を作成できない場合、リクエストは失敗し、VM は作成されません。1
Compute Engine は、できるだけ多くの VM を COUNT
まで作成します。1
以上、COUNT
未満Compute Engine は、少なくとも MIN_COUNT
台の VM、最大COUNT
台の VM を作成します。MIN_COUNT
台の VM を作成できない場合、リクエストは失敗し、VM は作成されません。- グローバル DNS を有効にする場合:
VM_NAME.c.PROJECT_ID.internal
- ゾーン DNS を有効にする場合:
VM_NAME.ZONE.c.PROJECT_ID.internal
NAME_PATTERN: VM の名前パターン。Compute Engine の一連のハッシュ(
#
)文字を使用して、一連の数値に置き換えます。たとえば、名前パターンにvm-#
を使用すると、vm-1
やvm-2
といった名前の VM が--count
で指定された VM の数まで生成されます。この数は、名前パターンで許可されている VM の数以下にする必要があります。名前パターンを使用すると、Compute Engine は以前のリクエストから作成された既存の VM の名前を確認して名前の競合を回避しようとします。
PREDEFINED_NAMES: 作成する VM の事前定義名のリスト。このフラグを使用して
COUNT
を指定する場合、COUNT
は指定された名前の数と同じである必要があります。[VM_NAME=HOSTNAME, ...]: 事前定義された VM 名と VM に割り当てる完全修飾ドメインホスト名の key-value ペアのリスト。カスタムホスト名は、有効なホスト名に関する RFC 1035 の要件を満たしている必要があります。
REGION: VM を作成するゾーン。
COUNT: 作成する VM の数。これは、
NAME_PATTERN
によって許可されている VM の数以下である必要があります。--predefined-names
を使用している場合、COUNT
を指定する必要はありませんが、指定する場合は、指定した名前の数と同じである必要があります。MIN_COUNT: 作成する VM の最小数。次の表に、このフラグの設定に応じたリクエストの動作を示します。
値 説明 未設定 デフォルト値は COUNT
です。Compute Engine がCOUNT
で指定された数の VM を作成できない場合、リクエストは失敗し、VM は作成されません。1
Compute Engine は、できるだけ多くの VM を COUNT
まで作成します。1
以上、COUNT
未満Compute Engine は、少なくとも MIN_COUNT
台の VM、最大COUNT
台の VM を作成します。MIN_COUNT
台の VM を作成できない場合、リクエストは失敗し、VM は作成されません。LOCATION_POLICY: リージョン内に含めるゾーンまたは除外するゾーン。ゾーンをキー、ポリシーを値とする Key-Value ペアのリストを使用します。ポリシーの有効な値は、デフォルトの
ALLOW
とDENY
です。このフィールドの値の例を次に示します。"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_SHAPE: 指定されたゾーンでの VM の分布。
locationPolicy
フィールドを使用してゾーンを指定します。このフィールドの有効な値を次の表に示します。値 説明 ANY_SINGLE_ZONE
単一のゾーンに VM の配置を適用し、未使用の予約の使用を優先します。これは、ゾーンをまたぐ下り(外向き)ネットワークを回避したり、ネットワーク レイテンシを短縮したりするために使用します。これがデフォルト値です。 BALANCED
VM をリージョン内のすべてのゾーンに均等に分散しようとします。 ANY
リージョン内の複数のゾーンに VM を分散できます。使用可能なリソースがあり、未使用のゾーン予約を最大化するゾーンを選択します。 PROJECT_ID: プロジェクト ID。
REGION: VM を作成するリージョン。
NAME_PATTERN: VM の名前パターン。これを指定するか、
perInstanceProperties
を指定します。Compute Engine の一連のハッシュ(#
)文字を使用して、一連の数値に置き換えます。たとえば、名前パターンにvm-#
を使用すると、vm-1
やvm-2
といった名前の VM が--count
で指定された VM の数まで生成されます。この数は、名前パターンで許可されている VM の数以下にする必要があります。名前パターンを使用すると、Compute Engine は以前のリクエストから作成された既存の VM の名前を確認して名前の競合を回避しようとします。
PREDEFINED_NAME_1、PREDEFINED_NAME_2、...: 作成する VM の事前定義名のリスト。これを指定するか、
namePattern
を指定します。このフラグを使用してCOUNT
を指定する場合、COUNT
は指定された名前の数と同じである必要があります。HOSTNAME_1, HOSTNAME_2, ...: VM に割り当てる完全修飾ドメインホスト名。カスタムホスト名は、有効なホスト名に関する RFC 1035 の要件を満たしている必要があります。
たとえば、2 台の VM
vm-1
とvm-2
にそれぞれカスタムホスト名my-host1234.example.com
とtest.example.com
を付けて作成するには、perInstanceProperties
でhostname
プロパティを次のように指定します。{ ... "perInstanceProperties": { "vm-1": { "hostname": "my-host1234.example.com" }, "vm-2": { "hostname": "test.example.com" }, ... },
COUNT: 作成する VM の数。これは、
NAME_PATTERN
によって許可されている VM の数以下である必要があります。perInstanceProperties
を使用している場合、COUNT
を指定する必要はありませんが、指定する場合は、指定した名前の数と同じである必要があります。MIN_COUNT: 作成する VM の最小数。次の表に、このフラグの設定に応じたリクエストの動作を示します。
値 説明 未設定 デフォルト値は COUNT
です。Compute Engine がCOUNT
で指定された数の VM を作成できない場合、リクエストは失敗し、VM は作成されません。1
Compute Engine は、できるだけ多くの VM を COUNT
まで作成します。1
以上、COUNT
未満Compute Engine は、少なくとも MIN_COUNT
台の VM、最大COUNT
台の VM を作成します。MIN_COUNT
台の VM を作成できない場合、リクエストは失敗し、VM は作成されません。LOCATION_POLICY: リージョン内に含めるゾーンまたは除外するゾーン。ゾーンをキー、ポリシーを値とする Key-Value ペアのリストを使用します。ポリシーの有効な値は、デフォルトの
ALLOW
とDENY
です。このフィールドの値の例を次に示します。"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_SHAPE: 指定されたゾーンでの VM の分布。
locationPolicy
フィールドを使用してゾーンを指定します。このフィールドの有効な値を次の表に示します。値 説明 ANY_SINGLE_ZONE
単一のゾーンに VM の配置を適用し、未使用の予約の使用を優先します。これは、ゾーンをまたぐ下り(外向き)ネットワークを回避したり、ネットワーク レイテンシを短縮したりするために使用します。これがデフォルト値です。 BALANCED
VM をリージョン内のすべてのゾーンに均等に分散しようとします。 ANY
リージョン内の複数のゾーンに VM を分散できます。使用可能なリソースがあり、未使用のゾーン予約を最大化するゾーンを選択します。 PROJECT_ID
: VM を作成するプロジェクトの IDREGION
: VM を作成するリージョンZONE
: VM を作成するゾーンOPERATION_ID
: 一括挿入オペレーション IDstatus
: ステータスは次のいずれかになります。CREATING
: VM の作成が進行中ROLLING_BACK
: リクエストに失敗してロールバック中DONE
: VM の作成またはロールバックが正常に完了
targetVmCount
: 指定したゾーンに作成される VM の数createdVmCount
: 指定したゾーンにすでに作成された VM の数failedToCreateVmCount
: 指定したゾーンで作成に失敗した VM の数deletedVmCount
: 失敗したオペレーションのロールバックの一環として削除された VM の数リクエストによって返された
Operation
から、operationGroupId
プロパティの値を取得します。gcloud compute operations list
コマンドでoperationGroupId
プロパティをフィルタとして使用し、ゾーンまたはリージョンのリクエストに関連付けられている VM をプロジェクト内のすべてのオペレーションとすべてのゾーンで検索します。gcloud compute operations list \ --filter=(operationGroupId=OPERATION_GROUP_ID)
次のいずれかを実行して、VM の残りのプロパティを取得します。
オペレーションのリストで、
targetLink
は VM のパスを表します。このパスを VM の名前として指定してgcloud compute instances describe
メソッドを使用し、VM のプロパティを取得します。gcloud compute instances describe VM_NAME
オペレーションのリストから VM の名前を含むフィルタを指定して、
gcloud compute instances list
メソッドを使用します。gcloud compute instances list VM_NAME \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
gcloud compute instances list
コマンドを使用して、すべてのゾーンとリージョンから VM のプロパティを取得し、インスタンスに固有のラベルまたは名前でフィルタリングします。gcloud compute instances list \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
リクエストによって返された
Operation
から、operationGroupId
プロパティの値を取得します。operationGroupId
プロパティを使用して、リージョンまたはゾーンのリクエストに関連付けられた VM オペレーションのリストを取得します。リージョン リクエストを送信した場合に、プロジェクト内のすべてのオペレーションとすべてのゾーンを検索するには、
globalOperations.aggregatedList
メソッドを使用し、フィルタとしてoperationGroupId
プロパティを含めます。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID)
ゾーン リクエストを送信した場合に、そのゾーンのオペレーションのリストを取得するには、
zoneOperations.get
メソッドを使用し、リクエストの本文にoperationGroupId
プロパティを含めます。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert { ... "operationGroupId":"OPERATION_GROUP_ID" ... }
次のいずれかを実行して、VM の残りのプロパティを取得します。
オペレーションのリストでは、
targetLink
は VM のパスを表します。このパスを VM の名前として指定したinstances.get
メソッドを使用し、VM のすべてのプロパティを取得します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
オペレーションのリストで VM の名前を含むフィルタを指定して、
instances.get
メソッドを使用します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
instances.aggregatedList
メソッドを使用して、すべてのゾーンとリージョンから VM のプロパティを取得し、インスタンスに固有のラベルまたは名前でフィルタリングします。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
ゾーン内に作成する VM の数を指定します。
nTarget = 1000
VM の作成を試行するリージョンを指定します。
acceptableRegions = ["us-central1", "us-east1", "us-west1"]
リージョンをイテレーションし、成功するまで各リージョンに VM の作成を試行します。
for region in acceptableRegions: call bulk API: region=region, location-policy=location-policy, count=nTarget if request succeeds and the operation succeeds: break
作成する VM の数と、作成先のリージョンを指定します。
nTarget = 1000 region = "us-central1"
VM の作成を試みるマシン ファミリーを指定します。
acceptableMachineFamilies = ["n2","c2","e2","n1"]
一連のマシンタイプをイテレーションし、成功するまでマシンタイプに VM の作成を試行します。
for family in acceptableMachineFamilies: call bulk APIs: region=region, count=nTarget, machineFamily=family if request succeeds and the operation succeeds: break
作成する VM の数、作成された VM の合計数を追跡するカウンタ、VM を作成するリージョン、Compute Engine が VM を作成するゾーンを保存する変数を指定します。
nTarget = 10000 nCreated = 0 region = "us-central1" targetZone = ""
最初のリクエストを発行して 5,000 台の VM を作成し、そのリクエストで返されるゾーンを保存して、作成した VM の数のカウンタを更新します。
call bulk API: region=region, count=5000 targetZone = zone chosen by bulk API nCreated += # of VMs created
Compute Engine が指定された数の VM を作成するまで、ゾーンで一度に最大 5,000 台の VM を作成するリクエストを発行し続けます。
while(nTarget - nCreated > 0): call bulk API: zone=targetZone, count=5000 nCreated += # of VMs created
作成する VM の数、作成先のゾーン、名前を保存するデータ構造を指定します。
nTarget = 1000 targetZone = "us-central-1a" names = []
パターン化された VM の名前を生成し、その名前をデータ構造に追加します。
for n in range(0, 1000): names.push("instance-%d".format(n))
VM を作成し、
perInstanceProperties
を使用して名前を指定します。call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
VM の名前でフィルタリングする
instances.list
メソッドを使用すして VM の詳細を取得し、詳細を返します。instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
非マネージド インスタンス グループに VM を追加する。非マネージド インスタンス グループに VM を追加すると、Cloud Monitoring を使用できます。非マネージド インスタンス グループでは、ロード バランシングや VM のライフサイクル管理は行われません。
ラベルを使用する。ラベルを使用すると、Key-Value ペアを使用してリソースを整理できます。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
必要なロール
VM の一括作成に必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1)(
roles/compute.instanceAdmin.v1
)の IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。この事前定義ロールには、VM の一括作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
VM を一括作成するには、次の権限が必要です。
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
リージョン内に VM を一括作成する
リージョン内に VM を一括作成するには、gcloud CLI または Compute Engine API を使用します。
マシンタイプを指定する、または GPU やローカル SSD などの追加のハードウェアをサポートする場合、Compute Engine はマシンタイプと追加のハードウェアをサポートするリージョン内のゾーンに VM を配置します。
gcloud
リージョン内に VM を一括作成するには、次の
gcloud compute instances bulk create
コマンドを使用します。gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --region=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT \ ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_SHAPE ]
次のように置き換えます。
REST
リージョン内に VM を一括作成するには、次の
instances.bulkInsert
メソッドを使用します。POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_SHAPE" ... }
次のように置き換えます。
ゾーン内に VM を一括作成する
ゾーン内に VM を一括作成するには、gcloud CLI または Compute Engine API を使用します。
gcloud
特定のゾーンに VM を一括作成するには、次の
gcloud compute instances bulk create
コマンドを使用します。gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --zone=ZONE \ --count=COUNT \ [ --min-count=MIN_COUNT ]
次のように置き換えます。
REST
ゾーン内に VM を一括作成するには、次の
instances.bulkInsert
メソッドを使用します。POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, ... }
次のように置き換えます。
カスタムホスト名を使用して VM を一括作成する
gcloud CLI または Compute Engine API を使用すると、リージョンまたはゾーンにカスタムホスト名を指定して VM を一括作成できます。
カスタムホスト名の DNS レコードは手動で構成する必要があります。詳細については、制限事項をご覧ください。
ホスト名を指定しない場合、Compute Engine は VM のホスト名を次のいずれかに設定します。
詳細については、内部 DNS 名をご覧ください。
gcloud
特定のリージョンにカスタムホスト名を使用して VM を一括作成するには、次の
gcloud beta compute instances bulk create
コマンドを使用します。gcloud beta compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --per-instance-hostnames=[VM_NAME=HOSTNAME,...] \ --zone=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_SHAPE ]
次のように置き換えます。
REST
特定のリージョンでカスタムホスト名を使用して VM を一括作成するには、次の
instances.bulkInsert
メソッドを使用します。POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {"hostname": HOSTNAME_1}, "PREDEFINED_NAME_2": {"hostname": HOSTNAME_2}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_SHAPE" ... }
次のように置き換えます。
VM の一括作成リクエストのステータスを確認する
ミューテーション リクエストを作成すると、Compute Engine から
operation
リソースが返されます。このリソースをポーリングすると、オペレーションのステータスを取得できます。詳細については、API レスポンスの処理をご覧ください。一括挿入リクエストのステータスを取得するには、
operation
リソースに HTTPGET
リクエストを送信します。GET compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID
リージョンの一括挿入リクエストのステータスを取得するには、次のリクエストを送信します。
GET compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID
次のように置き換えます。
レスポンスの
instancesBulkInsertOperationMetadata
オブジェクトには、オペレーションに関する次の詳細が含まれています。レスポンスの
progress
フィールドは、オペレーションの完了率を表します。Compute Engine が最小数の VM を正常に作成して、VM の作成やリクエストのロールバックが行われなくなるまで、一括挿入オペレーションのステータスは
RUNNING
になります。一括挿入オペレーションが進行中の場合は、次のようなレスポンスが表示されます。
{ "kind" : "compute#operation", "id": "4653028658507445766", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationType": "bulkInsert", "targetLink": "https://googleapis.com/compute/v1/projects/my-project" "targetId": 4653028658507445766, "status": "RUNNING", "progress": 2, "user": "example@google.com", "insertTime": "2023-04-23T09:57:13.474-07:00", "startTime": "2023-04-23T09:57:13.474-07:00", "selfLink": "https://googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "metadata": "instances_bulk_insert_operation_metadata": { "per_location_status": { "zones/us-central1-a": { "status": "CREATING", "targetVmCount": 50, "createdVmCount": 1 } } } }
この例では、1 つのインスタンスが正常に作成され、オペレーションは 2% 完了しています。
Compute Engine が
minCount
で指定された最小数の VM を正常に作成したとき、または Compute Engine がリクエストのロールバックを完了したときに、このオペレーションはステータスDONE
を返します。リクエストされた数の VM が正常に作成されると、次のようなレスポンスが返されます。{ "endTime": "2023-04-23T09:58:13.474-07:00", "id": "5053101474378293244", "insertTime": "2023-04-23T09:57:13.474-07:00", "instancesBulkInsertOperationMetadata": { "perLocationStatus": { "zones/us-central1-a": { "status": "DONE", "createdVmCount": 50, "targetVmCount": 50 } } }, "kind": "compute#operation", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "operationType": "bulkInsert", "progress": 100, "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "startTime": "2023-09-11T16:21:55.629-07:00", "status": "DONE", "targetId": "625521788110", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project", "user": "example@google.com", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a" }
詳細については、
instancesBulkInsertOperationMetadata
オブジェクトのドキュメントをご覧ください。単一の VM のステータスを確認する
VM を一括作成するリクエストで作成された単一の VM のステータスを確認するには、gcloud CLI または Compute Engine API を使用します。
gcloud
REST
擬似コードの例
次の疑似コード例では、VM の一括作成リクエストをカスタマイズする方法を示します。
複数のリージョンの 1 つに VM を一括作成する
次の疑似コードでは、複数のリージョンの 1 つに 1,000 台の VM を作成する方法を示します。複数のリージョンの 1 つに VM を一括作成しようとすると、リクエストで最初に容量が確認されます。十分な容量がなければリクエストはすぐに失敗し、次のリージョンで再試行されます。
1 つのマシンタイプに対してゾーンで VM を一括作成する
次の疑似コードでは、指定されたマシンタイプに対してゾーンで複数の VM を作成する方法を示します。同じマシンタイプで VM を一括作成しようとすると、リクエストで最初にマシンタイプの利用可否が確認されます。使用可能なマシンタイプが十分でないとリクエストはすぐに失敗し、次のマシンタイプで再試行されます。
1 つのゾーンに 5,000 台以上の VM を作成する
VM を一括作成する場合、各リクエストで作成できる VM は 5,000 台です。次の擬似コードでは、複数のリクエストを発行することで 1 つのゾーンに 5,000 台以上の VM を作成する方法を示します。
VM を一括作成してステータスを表示する
次の手順では、事前定義された名前を付けて VM のグループを作成し、そのステータスを表示する方法を示します。
次のステップ
VM を一括作成した後は、次のいずれかまたは両方の操作を行って VM の管理を簡素化します。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-11-21 UTC。
-