このページでは、インスタンス テンプレートの作成および管理方法について説明します。インスタンス テンプレートを使用すると、仮想マシン(VM)インスタンスの作成に使用するマシンタイプ、ブートディスク イメージ、ネットワーク、その他の VM プロパティを指定できます。
インスタンス テンプレートを使用すると、次のことができます。
- 個別の VM を作成する。
- マネージド インスタンス グループ(MIG)の VM を作成する。
- VM の予約を作成する。
- VM の将来の予約を作成する。
始める前に
- 確定的なインスタンス テンプレートを作成する条件と理由を確認してください。
- リージョン インスタンス テンプレートとグローバル インスタンス テンプレートの説明をご覧ください。
-
まだ設定していない場合は、認証を設定します。認証とは、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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- インスタンス テンプレートでの
nic0
以外のインターフェースの共有 VPC は、gcloud CLI と REST ではサポートされますが Google Cloud コンソールではサポートされません。 - 既存のインスタンス テンプレートを更新することはできません。また、インスタンス テンプレートの作成後に変更することもできません。インスタンス テンプレートが最新でなくなった場合や構成の変更が必要になった場合は、新しいインスタンス テンプレートを作成してください。
- インスタンス テンプレートでイメージ ファミリーを指定する場合、Google Cloud コンソールは使用できません。代わりに Google Cloud CLI または REST を使用できます。
- インスタンス テンプレートでゾーンディスクではなくリージョンディスクを指定する場合、Google Cloud コンソールは使用できません。代わりに Google Cloud CLI または REST を使用できます。
- インスタンス テンプレートを使用して、ストレージ プールにある Hyperdisk Balanced ブートディスクを使用する VM を作成できます(ストレージ プールが VM が作成されたゾーンに存在する場合)。グローバル インスタンス テンプレートを使用して、ストレージ プールにある起動ディスク以外の VM を作成することはできません。
Google Cloud コンソールで、[インスタンス テンプレート] ページに移動します。
残りの手順は、Google Cloud コンソールに表示されます。
- [
インスタンス テンプレートを作成 ] をクリックします。 - 次のように [ロケーション] を選択します。
- リージョンをまたいでインスタンス テンプレートを使用する場合は、[グローバル] を選択します。
- リージョン間の依存関係を減らす場合は、[リージョン] を選択します。
- リージョンを選択した場合は、インスタンス テンプレートを作成するリージョンを選択します。
次のフィールドでは、デフォルト値をそのまま使用するか、必要に応じて変更します。デフォルト値は、選択したマシン ファミリーに応じて変わります。
- [
マシンタイプ ] を選択します。 - ブートディスクのタイプまたはイメージを更新するには、[
ブートディスク ] セクションで [変更] をクリックします。 - ネットワーク インターフェースまたは IP アドレスの設定を更新するには、[
詳細オプション ] をクリックしてから [ネットワーキング] をクリックし、編集するネットワーク インターフェースをクリックします。
- [
省略可: Shielded VM をサポートするイメージを選択した場合は、VM の Shielded VM 設定を変更します。
- [詳細オプション] をクリックしてから、[セキュリティ] タブをクリックします。
- セキュアブートを無効にする場合は、[セキュアブートをオンにする] チェックボックスをオフにします。セキュアブートは、ブートレベルやカーネルレベルのマルウェアとルートキットから VM インスタンスを保護します。詳細については、セキュアブートをご覧ください。
仮想トラステッド プラットフォーム モジュール(vTPM)を無効にする場合は、[vTPM をオンにする] チェックボックスをオフにします。vTPM を使用すると、メジャード ブートが有効になり、それによって VM の起動前と起動時の整合性が検証されます。詳細については、仮想トラステッド プラットフォーム モジュール(vTPM)をご覧ください。
整合性モニタリングを無効にする場合は、[整合性のモニタリングを有効にする] チェックボックスをオフにします。整合性モニタリングを使用すると、Shielded VM インスタンス起動時の整合性を Cloud Monitoring でモニタリングできます。詳細については、整合性モニタリングをご覧ください。
省略可: [詳細オプション] で、タブをクリックするとテンプレートをさらにカスタマイズできます。たとえば、ブートディスク以外のセカンダリ ディスクを最大 15 個追加できます。
省略可: [同等の REST] をクリックして REST リクエスト本文を表示します。リクエスト本文には、インスタンス テンプレートの JSON 表現が含まれています。
[作成] をクリックしてテンプレートを作成します。
- マシンタイプ: マシンタイプ(
n1-standard-1
など) - イメージ: 最新の Debian イメージ
- ブートディスク: VM にちなんで名付けられた新しい標準のブートディスク
- ネットワーク: デフォルトの VPC ネットワーク
- IP アドレス: エフェメラル外部 IP アドレス
INSTANCE_TEMPLATE_NAME
: テンプレートの名前REGION
: リージョン インスタンス テンプレートを作成するリージョンIMAGE_FAMILY
: 非ブートディスクとして使用するイメージ ファミリー。イメージ ファミリーの詳細については、Compute Engine でイメージ ファミリーを使用する場合のベスト プラクティスをご覧ください。
代わりに
--image=IMAGE
フラグを使用すると、特定バージョンのイメージを指定できます。空のディスクの場合は、
image-family
プロパティまたはimage
プロパティを指定しないでください。DISK_IMAGE_PROJECT
: イメージを含むイメージ プロジェクト。空のディスクには、
image-project
プロパティを指定しないでください。公開イメージの詳細については、公開イメージをご覧ください。SIZE_GB_DISK1
とSIZE_GB_DISK2
: 各セカンダリ ディスクのサイズ。DISK_NAME
: 省略可。VM の作成後にゲスト OS に表示されるディスク名。DISK_TYPE
: 省略可。作成するディスクのタイプ。指定しない場合、デフォルトはマシンタイプに応じてpd-standard
またはpd-balanced
になります。ZONE
、REMOTE_ZONE
: リージョン ディスクを作成するゾーンと複製するゾーン。ゾーンディスクの場合は、
replica-zones
プロパティを指定しないでください。--no-shielded-secure-boot
: セキュアブートをオフにします。セキュアブートは、ブートレベルとカーネルレベルのマルウェアとルートキットから VM インスタンスを保護します。詳細については、セキュアブートをご覧ください。
--no-shielded-vtpm
: 仮想トラステッド プラットフォーム モジュール(vTPM)をオフにします。vTPM を使用すると、メジャード ブートが有効になり、それによって VM の起動前と起動時の整合性が検証されます。詳細については、仮想トラステッド プラットフォーム モジュール(vTPM)をご覧ください。
--no-shielded-integrity-monitoring
: 整合性モニタリングをオフにします。整合性モニタリングを使用すると、Shielded VM インスタンス起動時の整合性を Cloud Monitoring でモニタリングできます。詳細については、整合性モニタリングをご覧ください。
- 公開イメージまたは非公開イメージを使用して追加ディスクを作成します。
- 空のディスクを追加するには、
sourceImage
値のないinitializeParams
エントリを定義します。 - リージョン ディスクを作成するには、
replicaZones
プロパティを指定してinitializeParams
エントリを定義します。 PROJECT_ID
: プロジェクト ID。REGION
: リージョン インスタンス テンプレートを作成するリージョン。INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。ZONE
: VM を配置するゾーン。MACHINE_TYPE
: VM のマシンタイプ。-
IMAGE_PROJECT
: イメージを含むイメージ プロジェクト。公開イメージの詳細については、公開イメージをご覧ください。
IMAGE
またはIMAGE_FAMILY
: 次のいずれかを指定します。-
IMAGE
: 特定のバージョンのイメージ例:
"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
IMAGE_FAMILY
: イメージ ファミリーこれにより、非推奨ではない最新の OS イメージから VM が作成されます。たとえば、
"sourceImage": "projects/debian-cloud/global/images/family/debian-10"
を指定すると、Compute Engine は Debian 10 イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。イメージ ファミリーの詳細については、Compute Engine でイメージ ファミリーを使用する場合のベスト プラクティスをご覧ください。
-
DISK_NAME
: 省略可。VM の作成後にゲスト OS に表示されるディスク名。PROJECT_NAME
: VM に関連付けられているプロジェクトREMOTE_ZONE
: リージョン ディスクの複製先となるゾーン。インスタンスごとにブートディスクを作成するには、
initializeParams
を指定します。前の例に示すように、sourceImage
プロパティを使用して公開イメージまたはカスタム イメージ(またはイメージ ファミリー)を使用してディスクを作成できます。空のディスクを追加するには、sourceImage
を指定しないでください。追加するディスクごとにinitializeParams
プロパティを使用して、最大 15 個のセカンダリ非ブートディスクを追加することもできます。既存のブートディスクをアタッチするには、
source
を指定します。既存のブートディスクをアタッチした場合、テンプレートから作成できるインスタンスは 1 つのみです。enableSecureBoot
: セキュアブートをオンまたはオフにします。セキュアブートは、ブートレベルとカーネルレベルのマルウェアとルートキットから VM インスタンスを保護します。詳細については、セキュアブートをご覧ください。
enableVtpm
: 仮想トラステッド プラットフォーム モジュール(vTPM)をオンまたはオフにします。vTPM を使用すると、メジャード ブートが有効になり、それによって VM の起動前と起動時の整合性が検証されます。詳細については、仮想トラステッド プラットフォーム モジュール(vTPM)をご覧ください。
enableIntegrityMonitoring
: 整合性モニタリングをオンまたはオフにします。整合性モニタリングを使用すると、Shielded VM インスタンスの実行時の起動の整合性を Cloud Monitoring レポートでモニタリングして検証できます。詳細については、整合性モニタリングをご覧ください。
INSTANCE_TEMPLATE_NAME
: 作成するテンプレートの名前。SOURCE_INSTANCE
: 新しいテンプレートのモデルとして使用するインスタンスの名前。SOURCE_INSTANCE_ZONE
: ソース インスタンスを含むゾーン。REGION
: リージョン インスタンス テンプレートを作成するリージョン。SOURCE_DISK
: テンプレート内でオーバーライドするソース インスタンスのディスクの名前。INSTANTIATE_OPTIONS
: ディスクを組み込むかどうかを指定します。組み込む場合は、どのイメージを使用するかを指定します。有効な値は、ディスクのタイプによって異なります。source-image
またはsource-image-family
(ブートディスクとその他の読み取り / 書き込み用の永続ディスクにのみ有効)。ソース VM インスタンスでディスクの作成に使用したソースイメージまたはソースイメージ ファミリーを使用する場合は、このオプションを指定します。custom-image
(ブートディスクとその他の読み取り / 書き込み用の永続ディスクにのみ有効)。インスタンス テンプレートのソース VM のアプリケーションと設定を保持する場合は、カスタム イメージを作成して、テンプレートを作成するときに指定できます。指定する場合、次の例のようにカスタム イメージのパスまたは URL を指定します。また、次の形式を使用してイメージ ファミリーを指定することもできます。--configure-disk=device-name=DATA_DISK_NAME,instantiate-from=custom-image,
custom-image=projects/PROJECT_ID/global/images/family/IMAGE_FAMILY_NAMEattach-read-only
(読み取り専用ディスクにのみ有効)。blank
(ブートディスク以外の永続ディスクとローカル SSD にのみ有効)。指定した場合、テンプレートを使用して新しいインスタンスを作成すると、ディスクはフォーマットされていない状態で作成されます。スケーラブルな設定でディスクを使用するには、起動スクリプトでディスクをフォーマットしてマウントする必要があります。do-not-include
(ブートディスク以外の永続ディスクと読み取り専用ディスクにのみ有効)。
インスタンスを削除したときに
AUTO_DELETE
でディスクを自動削除するかどうかを指定します。有効な値はfalse
、no
、true
、yes
です。PROJECT_ID
: プロジェクト ID。INSTANCE_TEMPLATE_NAME
: 新しいテンプレートの名前。SOURCE_INSTANCE_ZONE
: ソース インスタンスのゾーン。SOURCE_INSTANCE
: このインスタンス テンプレートのモデルとして使用するソース インスタンスの名前。SOURCE_DISK
: テンプレート内でオーバーライドするソース インスタンスのディスクの名前。INSTANTIATE_OPTIONS
: ディスクを組み込むかどうかを指定します。組み込む場合は、どのイメージを使用するかを指定します。有効な値は、ディスクのタイプによって異なります。
source-image
またはsource-image-family
(ブートディスクとその他の読み取り / 書き込み用の永続ディスクにのみ有効)。custom-image
(ブートディスクとその他の読み取り / 書き込み用の永続ディスクにのみ有効)。インスタンス テンプレートのソース VM のアプリケーションと設定を保持する場合は、カスタム イメージを作成して、テンプレートを作成するときに指定できます。指定する場合、次の例のようにカスタム イメージのパスまたは URL を指定します。また、次の形式を使用してイメージ ファミリーを指定することもできます。--configure-disk=device-name=DATA_DISK_NAME,instantiate-from=custom-image,
custom-image=projects/PROJECT_ID/global/images/family/IMAGE_FAMILY_NAMEattach-read-only
(読み取り専用ディスクにのみ有効)。blank
(ブートディスク以外の永続ディスクとローカル SSD にのみ有効)。指定した場合、テンプレートを使用して新しいインスタンスを作成すると、ディスクはフォーマットされていない状態で作成されます。スケーラブルな設定でディスクを使用するには、起動スクリプトでディスクをフォーマットしてマウントする必要があります。do-not-include
(ブートディスク以外の永続ディスクと読み取り専用ディスクにのみ有効)。
- [デフォルト] ソース インスタンスでブートディスクを作成するために使用されたソースイメージまたはイメージ ファミリーと同じものを使用します。
- 前の例で説明したように、任意のイメージ(カスタムまたは公開)の URL を使用するか、次の形式を使用してイメージ ファミリーを指定します。
- [デフォルト] ソース インスタンスでディスクを作成するために使用されたソースイメージまたはソースイメージ ファミリーと同じものを使用します。注: ソース インスタンスのディスクにソースイメージまたはソースイメージ ファミリーのプロパティがない場合、空のディスクとしてテンプレートに含まれます。
- 前の例で説明したように、任意のイメージ(カスタムまたは公開)の URL を使用するか、次の形式を使用してイメージ ファミリーを指定します。
projects/exampleproject/global/images/family/IMAGE_FAMILY_NAME
- 代わりに空のディスクをテンプレートで使用します。テンプレートを使用して新しいインスタンスを作成すると、このディスクはフォーマットされていない状態で作成されます。スケーラブルな設定でディスクを使用するには、起動スクリプトでディスクをフォーマットしてマウントする必要があります。
- ディスクは含めないでください。
- [デフォルト] ディスクを読み取り専用モードで組み込みます。
- ディスクは含めないでください。
- [デフォルト] 空のローカル SSD を組み込みます。テンプレートを使用して新しいインスタンスを作成すると、このディスクはフォーマットされていない状態で作成されます。スケーラブルな設定でディスクを使用するには、起動スクリプトでディスクをフォーマットしてマウントする必要があります。
[インスタンス テンプレート] ページに移動します。
コピーして更新するインスタンス テンプレートをクリックします。
[同様のものを作成] をクリックします。
新しいテンプレートで構成を更新します。
[作成] をクリックします。
必要な GPU タイプをサポートするマシンタイプ。リージョン インスタンス テンプレートを作成する場合は、テンプレートで指定する GPU タイプがリージョン内の少なくとも 1 つのゾーンで使用できる必要があります。
ホスト メンテナンス イベント中に VM を停止するメンテナンス ポリシー。
Google Cloud コンソールで、[インスタンス テンプレート] ページに移動します。
[インスタンス テンプレートを作成] をクリックします。
[名前] フィールドに、インスタンス テンプレートの名前を入力します。
[ロケーション] セクションで、次のいずれかのオプションを選択します。
グローバル インスタンス テンプレートを作成するには、[グローバル](デフォルト)を選択します。
リージョン インスタンス テンプレートを作成するには、[リージョン] を選択し、インスタンス テンプレートを作成するリージョンを選択します。
[マシンの構成] セクションで、次の操作を行います。
[GPU] タブをクリックします。
[GPU のタイプ] メニューで、GPU のタイプを選択します。
[GPU の数] メニューで、GPU の数を選択します。
省略可: GPU モデルがグラフィック ワークロード用の NVIDIA RTX 仮想ワークステーション(vWS)グラフィックを多用するワークロードを実行する場合は、仮想ワークステーション(NVIDIA GRID)を有効にするをご覧ください。
[マシンタイプ] セクションでマシンタイプを選択します。
省略可: デフォルト値のブートディスクのタイプまたはイメージを変更するには、[ブートディスク] セクションで [変更] をクリックします。プロンプトに従ってブートディスクを変更します。
[作成] をクリックします。
INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。IMAGE_PROJECT
: イメージを含むイメージ プロジェクト(例:debian-cloud
)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE_FAMILY
またはIMAGE
: 次のいずれかを指定します。IMAGE_FAMILY
: イメージ ファミリー。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、debian-10
を指定すると、Debian 10 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。IMAGE
: OS イメージの特定のバージョン。例:debian-10-buster-v20200309
特定のバージョンの OS イメージを指定する場合は、--image-family
フラグを--image
フラグに置き換える必要があります。
MACHINE_TYPE
: VM のマシンタイプ。N1 マシンタイプを指定する場合は、--accelerator
フラグを設定して、VM にアタッチする GPU の数とタイプを指定します。2 個の vCPU を備えた事前定義された N1 マシンタイプ。
VM に 1 個の NVIDIA T4 GPU を接続。
イメージ プロジェクトとして Debian を使用。
イメージ ファミリーとして Debian 10 を使用。
PROJECT_ID
: インスタンス テンプレートを作成するプロジェクトの ID。INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。IMAGE_PROJECT
: イメージを含むイメージ プロジェクト(例:debian-cloud
)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE
またはIMAGE_FAMILY
: 次のいずれかを指定します。IMAGE
: OS イメージの特定のバージョン。例:debian-10-buster-v20200309
IMAGE_FAMILY
: イメージ ファミリー。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-10
を指定すると、Debian 10 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
MACHINE_TYPE
: VM のマシンタイプ。N1 マシンタイプを指定する場合は、guestAccelerators
フィールドを含めて、VM に接続する GPU の数とタイプを指定します。2 個の vCPU を備えた事前定義された N1 マシンタイプ。
VM に 1 個の NVIDIA T4 GPU を接続。
イメージ プロジェクトとして Debian を使用。
イメージ ファミリーとして Debian 10 を使用。
[インスタンス テンプレート] ページに移動します。
[インスタンス テンプレートを作成] をクリックします。
[コンテナ] セクションで、[コンテナをデプロイ] をクリックします。
[コンテナを構成] ダイアログで、使用するコンテナ イメージを指定します。
- Container Registry または Artifact Registry からイメージを指定できます。次に例を示します。
gcr.io/cloud-marketplace/google/nginx1:TAG
。ここで、TAG は Google Cloud Marketplace で利用可能な特定バージョンの NGINX コンテナ イメージ用に定義されたタグです。us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
は、Artifact Registry に格納されているサンプルhello-app
イメージを選択します。
- Docker Hub のコンテナ イメージを使用する場合は、常に完全な Docker イメージ名を指定します。たとえば、Apache コンテナ イメージをデプロイするには、次のイメージ名
docker.io/httpd:2.4
を指定します。
- Container Registry または Artifact Registry からイメージを指定できます。次に例を示します。
必要に応じて、[コンテナの詳細オプション] をクリックします。詳細については、コンテナを実行する際のオプションの構成をご覧ください。
[作成] をクリックします。
INSTANCE_TEMPLATE_NAME
: 作成するテンプレートの名前。CONTAINER_IMAGE
: 使用するコンテナ イメージの完全な名前。INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前REGION
: サブネットのリージョンSUBNET_NAME_OR_URL
: サブネットの名前またはその URLINSTANCE_TEMPLATE_REGION
: インスタンス テンプレートを作成するリージョン。REGION と同じにする必要があります。カスタム イメージ。MIG はインスタンスの追加と削除が頻繁に行われることを想定した設計であるため、カスタム イメージを作成し、それをインスタンス テンプレートで指定するようにすると便利です。VM に必要なアプリケーションと設定でイメージを準備できるため、MIG の個々の VM でこれらの項目を手動で構成する必要はありません。
公開イメージ。公開イメージと起動スクリプトを使用するインスタンス テンプレートを作成し、それを起動してインスタンスを準備できます。
- インスタンス テンプレートから VM を作成する。
- ゾーン マネージド インスタンス グループ(MIG)を作成する。
- リージョン MIG を作成する。
- 既存の MIG の VM を更新して新しいテンプレートの構成を使用する。
- VM の予約を作成する。
Terraform
ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
Go
ローカル開発環境でこのページの Go サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
Java
ローカル開発環境でこのページの Java サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
Node.js
ローカル開発環境でこのページの Node.js サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
Python
ローカル開発環境でこのページの Python サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
制限事項
インスタンス テンプレートの作成
VM メタデータ、起動スクリプト、永続ディスク、サービス アカウントなど、リクエストで個々の VM インスタンスを作成する際に指定できる大半の VM プロパティはインスタンス テンプレートでも指定できます。マシンタイプ、ブートディスク、ネットワークを指定する必要があります。
Google Cloud コンソール、Google Cloud CLI、または API を使用して、リージョン インスタンス テンプレートまたはグローバル インスタンス テンプレートを作成します。グローバル インスタンス テンプレートを作成するには、Terraform または Cloud クライアント ライブラリも使用できます。
コンソール
gcloud
リージョンまたはグローバルのインスタンス テンプレートを作成するには、
instance-templates create
コマンドを使用します。リージョン インスタンス テンプレートの場合、--instance-template-region
フラグを使用してテンプレートのリージョンを設定する必要があります。次のコマンドを使用して、リージョン インスタンス テンプレートを作成します。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --instance-template-region=REGION
次のコマンドを使用して、グローバル インスタンス テンプレートを作成します。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME
明示的なテンプレート設定を指定しない場合、
gcloud compute
は次のデフォルト値を使用します。これらの構成設定は明示的に指定することもできます。例:
gcloud compute instance-templates create example-template-custom \ --machine-type=e2-standard-4 \ --image-family=debian-10 \ --image-project=debian-cloud \ --boot-disk-size=250GB
ブートディスク以外のセカンダリ ディスクを最大 15 個追加できます。作成する各セカンダリ ディスクに
--create-disk
フラグを指定します。公開イメージまたはカスタム イメージからセカンダリ ディスクを作成するには、--create-disk
フラグに各ディスクのimage
プロパティとimage-project
プロパティを指定します。空のディスクを作成するには、これらのプロパティを指定しないでください。ディスクのsize
プロパティとtype
プロパティは必要に応じて指定してください。 リージョンディスクを指定するには、replica-zones
プロパティを使用します。gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --create-disk= \ image-family=DISK_IMAGE_FAMILY, \ image-project=DISK_IMAGE_PROJECT, \ size=SIZE_GB_DISK1 \ --create-disk= \ device-name=DISK_NAME,type=DISK_TYPE, \ size=SIZE_GB_DISK2 \ replica-zones=^:^ZONE:REMOTE_ZONE, \ boot=false
ヒント: ディスク
replica-zones
パラメータを指定する際、^:^
文字は、値の区切り文字がカンマ(,
)ではなくコロン(:
)であることを示します。次のように置き換えます。
Shielded VM をサポートするイメージを選択した場合は、必要に応じて次のいずれかのフラグを使用してインスタンスの Shielded VM の設定を変更できます。
使用可能なすべてのサブコマンドとフラグの一覧については、
instance-templates
リファレンスをご覧ください。デフォルトの構成設定を使用したテンプレートは次のようになります。
gcloud compute instance-templates describe example-template
creationTimestamp: '2019-09-10T16:18:32.042-07:00' description: '' id: '6057583701980539406' kind: compute#instanceTemplate name: example-template properties: canIpForward: false disks: - autoDelete: true boot: true initializeParams: sourceImage: https://compute.googleapis.com/compute/v1/projects/debian-cloud/global/images/family/debian-10 kind: compute#attachedDisk mode: READ_WRITE type: PERSISTENT machineType: e2-standard-2 networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat type: ONE_TO_ONE_NAT network: https://compute.googleapis.com/compute/v1/projects/myproject/global/networks/default scheduling: automaticRestart: true onHostMaintenance: MIGRATE serviceAccounts: - email: default scopes: - https://www.googleapis.com/auth/devstorage.read_only selfLink: https://compute.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-template
Terraform
インスタンス テンプレートを作成するには、
google_compute_instance_template
リソースを使用できます。この Terraform の例は、次の gcloud CLI コマンドと類似しています。
gcloud compute instance-templates create my-instance-template \ --machine-type=e2-standard-4 \ --image-family=debian-9 \ --image-project=debian-cloud \ --boot-disk-size=250GB
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
Go
Java
Node.js
Python
REST
リージョン インスタンス テンプレートを作成するには、次のように
regionInstanceTemplates.insert
メソッドにPOST
リクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates
グローバル インスタンス テンプレートを作成するには、
instanceTemplates.insert
メソッドにPOST
リクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
追加するディスクごとに 1 つのフィールドで、
disks
プロパティを使用するとブートディスク以外のセカンダリ ディスクを最大 15 個追加できます。追加するディスクごとに次の操作を行うことができます。リクエスト本文で、テンプレート プロパティを指定します。
{ "name": "INSTANCE_TEMPLATE_NAME", "properties": { "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "network": "global/networks/default", "accessConfigs": [ { "name": "external-IP", "type": "ONE_TO_ONE_NAT" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } }, { "type": "PERSISTENT", "boot": false, "deviceName": "DISK_NAME", "initializeParams": { "replicaZones": [ "projects/PROJECT_NAME/zones/ZONE", "projects/PROJECT_NAME/zones/REMOTE_ZONE" ] } } ] } }
次のように置き換えます。
disks
プロパティには、次のいずれかのオプションを指定できます。initializeParams
にはdiskSizeGb
、diskType
、labels
のプロパティを、source
にはdiskSizeGb
プロパティを必要に応じて指定します。Shielded VM をサポートするイメージを選択した場合は、必要に応じて次のブール値の項目をリクエスト本文で使用して、VM の Shielded VM の設定を変更できます。
リクエスト パラメータの詳細については、
instanceTemplates.insert
メソッドをご覧ください。既存のインスタンスに基づいてインスタンス テンプレートを作成する
REST または gcloud CLI を使用して、既存の VM インスタンスの構成をインスタンス テンプレートとして保存できます。必要に応じて、テンプレートでソースディスクの定義方法をオーバーライドできます。
他のプロパティをオーバーライドする必要がある場合は、既存のインスタンスに基づいてインスタンス テンプレートを作成してから、オーバーライドを追加した同様のテンプレートを作成します。
gcloud
--source-instance
フラグと--source-instance-zone
フラグを指定して、gcloud compute instance-templates create
コマンドを使用します。リージョン インスタンス テンプレートを作成する場合は、--instance-template-region
フラグを使用してインスタンス テンプレートのリージョンも指定する必要があります。リージョン インスタンス テンプレートを作成するには、次のコマンドを使用します。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --source-instance=SOURCE_INSTANCE \ --source-instance-zone=SOURCE_INSTANCE_ZONE \ --instance-template-region=REGION
グローバル インスタンス テンプレートを作成するには、次のコマンドを使用します。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --source-instance=SOURCE_INSTANCE \ --source-instance-zone=SOURCE_INSTANCE_ZONE
ソース インスタンスのディスクの定義方法をオーバーライドするには、
--configure-disk
フラグを 1 つ以上追加します。次の例では、既存のインスタンスからグローバル インスタンス テンプレートを作成し、指定した仕様でソース インスタンスのディスクをオーバーライドします。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --source-instance=SOURCE_INSTANCE \ --source-instance-zone=SOURCE_INSTANCE_ZONE \ --configure-disk= \ device-name=SOURCE_DISK, \ instantiate-from=INSTANTIATE_OPTIONS, \ auto-delete=AUTO_DELETE
次のように置き換えます。
たとえば、次のコマンドは
my-source-instance
に基づくインスタンス テンプレートを作成して、data-disk-a
からオリジナルのイメージを使用することもできますが、自動削除をtrue
に設定し、data-disk-b
をカスタム イメージに置き換えます。gcloud compute instance-templates create my-instance-template \ --source-instance=my-source-instance \ --configure-disk=device-name=data-disk-a,instantiate-from=source-image, \ auto-delete=true --configure-disk=device-name=data-disk-b,instantiate-from=custom-image, \ custom-image=projects/cps-cloud/global/images/cos-89-16108-403-15
Go
Java
Node.js
Python
REST
リージョン インスタンス テンプレートを作成するには、
regionInstanceTemplates.insert
メソッドを使用します。グローバル インスタンス テンプレートを作成するには、instanceTemplates.insert
メソッドを使用します。リクエストでは、
sourceInstance
フィールドを指定する必要があります。ソース インスタンスのディスクの定義方法をオーバーライドするには、1 つ以上のdiskConfigs
フィールドを追加します。たとえば、既存のインスタンスからグローバル インスタンス テンプレートを作成するには、次の呼び出しを行います。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "sourceInstance": "zones/SOURCE_INSTANCE_ZONE/instances/SOURCE_INSTANCE", "sourceInstanceParams": { "diskConfigs": [ { "deviceName": "SOURCE_DISK", "instantiateFrom": "INSTANTIATE_OPTIONS", "autoDelete": false } ] } }
次のように置き換えます。
次の例では、
my-source-instance
に基づく新しいインスタンス テンプレートを作成しています。インスタンス テンプレートでは、data-disk-a
のイメージはprojects/cos-cloud/global/images/cos-89-16108-403-15
に置き換えられます。POST https://compute.googleapis.com/compute/v1/projects/my_project/global/instanceTemplates { "name": "my-instance-template", "sourceInstance": "zones/us-central1-a/instances/my-source-instance", "sourceInstanceParams": { "diskConfigs": [ { "deviceName": "data-disk-a", "instantiateFrom": "custom-image", "customImage": "projects/cos-cloud/global/images/cos-89-16108-403-15" } ] } }
次の表は、ディスクをオーバーライドするオプションがテンプレートでどのように定義されるかを示しています。
ディスクタイプ オプション ブートディスク projects/exampleproject/global/images/family/IMAGE_FAMILY_NAME
その他の読み取り / 書き込み用の永続ディスク 読み取り専用ディスク ローカル SSD ディスクごとで
auto-delete
属性をオーバーライドして、関連付けられたインスタンスが削除されるときにディスクを削除するかどうかも指定できます。デフォルトでは、オーバーライド オプションが指定されていない場合、テンプレート内のディスク構成はソース インスタンスと同じになります。
既存のテンプレートに基づいてインスタンス テンプレートを作成する
既存のインスタンス テンプレートを更新することはできません。ただし、インスタンス テンプレートが最新でなくなった場合や、変更を行う必要がある場合は、コンソールを使用して、同様のプロパティを持つ別のインスタンス テンプレートを作成できます。
GPU VM のインスタンス テンプレートを作成する
インスタンス テンプレートを作成するときに、次のように指定することで、GPU が接続された VM を作成するように構成できます。
コンソール
GPU VM のインスタンス テンプレートを作成するには、次の操作を行います。
gcloud
GPU VM のインスタンス テンプレートを作成するには、
--maintenance-policy
フラグをTERMINATE
に設定してinstance-templates create
コマンドを使用します。たとえば、GPU VM のグローバル インスタンス テンプレートを作成するには、次のコマンドを使用します。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --image-project=IMAGE_PROJECT \ --image-family=IMAGE_FAMILY \ --machine-type=MACHINE_TYPE \ --maintenance-policy=TERMINATE
次のように置き換えます。
たとえば、次のプロパティを指定する GPU VM のグローバル インスタンス テンプレートを作成するとします。
インスタンス テンプレートのサンプルを作成するには、次のコマンドを使用します。
gcloud compute instance-templates create instance-template-gpu \ --accelerator=count=1,type=nvidia-tesla-t4 \ --machine-type=n1-standard-2 \ --image-family=debian-10 \ --image-project=debian-cloud \ --maintenance-policy=TERMINATE
Terraform
GPU VM のインスタンス テンプレートを作成するには、
google_compute_region_instance_template
リソースを使用します。たとえば、2 個の vCPU と 1 個の NVIDIA T4 GPU が接続された事前定義された N1 マシンタイプを指定するグローバル インスタンス テンプレートを作成するには、次のリソースを使用します。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
REST
GPU VM のインスタンス テンプレートを作成するには、
instanceTemplates.insert
メソッドにPOST
リクエストを送信します。リクエストの本文にonHostMaintenance
フィールドを含め、TERMINATE
に設定します。たとえば、GPU VM のグローバル インスタンス テンプレートを作成するには、次のような
POST
リクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "accessConfigs": [ { "name": "external-IP", "type": "ONE_TO_ONE_NAT" } ], "network": "global/networks/default" } ], "scheduling": { "onHostMaintenance": "TERMINATE" } } }
次のように置き換えます。
たとえば、次のプロパティを指定する GPU VM のグローバル インスタンス テンプレートを作成するとします。
インスタンス テンプレートのサンプルを作成するには、次のような
POST
リクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates { "name": "instance-template-gpu", "properties": { "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/family/debian-10" } } ], "guestAccelerators": [ { "acceleratorType": "nvidia-tesla-t4", "acceleratorCount": 1 } ], "machineType": "n1-standard-2", "networkInterfaces": [ { "accessConfigs": [ { "name": "external-IP", "type": "ONE_TO_ONE_NAT" } ], "network": "global/networks/default" } ], "scheduling": { "onHostMaintenance": "TERMINATE" } } }
インスタンス テンプレート作成時のその他の構成オプションについては、このドキュメントのインスタンス テンプレートを作成するをご覧ください。
コンテナ イメージを指定してインスタンス テンプレートを作成する
インスタンス テンプレートでコンテナ イメージを指定できます。デフォルトでは、Compute Engine によって、Docker がインストールされた Container-Optimized OS イメージもテンプレートに組み込まれます。テンプレートを使用して新しいインスタンスを作成すると、インスタンスの起動時にコンテナが自動的に起動されます。
Console
gcloud
gcloud compute instance-templates create-with-container
コマンドを実行します。gcloud compute instance-templates create-with-container INSTANCE_TEMPLATE_NAME \ --container-image=CONTAINER_IMAGE
次のように置き換えます。
たとえば、次のコマンドは
nginx-vm
という新しいインスタンス テンプレートを作成します。このテンプレートから作成された VM インスタンスは、起動時にコンテナ イメージgcr.io/cloud-marketplace/google/nginx1:TAG
を起動して実行します。gcloud compute instance-templates create-with-container nginx-vm \ --container-image=gcr.io/cloud-marketplace/google/nginx1:TAG
TAG
を、Google Cloud Marketplace で利用可能な特定バージョンの NGINX コンテナ イメージ用に定義されたタグに置き換えます。コンテナの実行オプションを構成することもできます。
サブネットを指定してインスタンス テンプレートを作成する
gcloud
リージョンまたはグローバルのインスタンス テンプレートを作成するには、
instance-templates create
コマンドを使用します。--subnet
フラグを使用して、テンプレートから作成されたインスタンスを任意のサブネットに配置します。--subnet
フラグには--region
フラグが必要です。リージョン インスタンス テンプレートを作成する場合は、
--instance-template-region
フラグを使用してテンプレートのリージョンを設定する必要があります。リージョン インスタンス テンプレートを作成するリージョンと同じリージョンのサブネットを使用してください。gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --region=REGION \ --subnet=SUBNET_NAME_OR_URL \ --instance-template-region=INSTANCE_TEMPLATE_REGION
次のように置き換えます。
次の例では、
subnet-us-qa
サブネットでのみインスタンスを作成するtemplate-qa
というテンプレートを作成しています。gcloud compute instance-templates create template-qa \ --region=us-central1 \ --subnet=subnet-us-qa Created [https://compute.googleapis.com/compute/latest/projects/PROJECT_ID/global/instanceTemplates/template-qa]. NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP template-qa e2-standard-2 2019-12-23T20:34:00.791-07:00
Go
Java
Node.js
Python
このテンプレートを使用して MIG のインスタンスを作成すると(自動スケーリングの設定は任意)、指定したリージョンとサブネットにインスタンスが自動的に作成されます。これにより、ロード バランシングのために新規作成するインスタンスのサブネットを制御できるようになります。
インスタンス テンプレートでカスタム イメージまたは公開イメージを使用する
インスタンス テンプレートには、カスタム イメージまたは公開イメージを使用できます。
カスタム イメージは起動スクリプトを使用する VM より確定的であり、起動時間が短くなります。ただし、起動スクリプトのほうが柔軟性が高く、インスタンス内のアプリと設定を簡単に更新できます。
イメージ ファミリーを使用してイメージを管理している場合、カスタム イメージまたは公開イメージのファミリー名をインスタンス テンプレートに指定できます。イメージ ファミリーの詳細については、Compute Engine でイメージ ファミリーを使用する場合のベスト プラクティスをご覧ください。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-05 UTC。
-