利用執行個體範本建立 VM 執行個體

本頁面說明如何使用執行個體範本建立 VM 執行個體。執行個體範本是一種 API 資源,可定義 VM 執行個體的屬性。您可以在執行個體範本中定義機器類型、OS 映像檔、永久磁碟設定、中繼資料、開機指令碼等屬性,然後使用執行個體範本建立個別 VM 執行個體或代管執行個體群組

利用執行個體範本建立 VM 執行個體時,預設行為會建立 VM 執行個體,其屬性與範本中指定的屬性相同,但 VM 執行個體名稱和執行個體運作時所屬的區域例外。此外,如果您要變更執行個體範本的某些屬性以做特定用途,也可以選擇在建立執行個體期間覆寫特定欄位。

本文假定執行個體範本已準備就緒。如果您還沒有執行個體範本,請按照操作說明建立新執行個體範本

事前準備

利用執行個體範本建立 VM 執行個體

如要完全依照執行個體範本說明所述建立執行個體,請依照下列操作說明操作。

主控台

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面

  2. 按一下 [Create instance] (建立執行個體)
  3. 按一下 [New VM instance from template] (利用範本建立新的 VM 執行個體)
  4. 選取範本並按一下 [Continue] (繼續)
  5. 指定執行個體的名稱,並視需要進一步調整各項設定。
  6. 按一下 [Create] (建立)。請參閱建立執行個體一節瞭解其他設定詳情。

gcloud

透過 gcloud compute,使用與您用來建立一般執行個體相同的 instances create 指令,但要新增 --source-instance-template 標記:

gcloud compute instances create [INSTANCE_NAME] --source-instance-template [INSTANCE_TEMPLATE_NAME]

其中:

  • [INSTANCE_NAME] 是執行個體的名稱。
  • [INSTANCE_TEMPLATE_NAME] 是要使用的執行個體範本名稱。

    例如:

    gcloud compute instances create example-instance --source-instance-template my-instance-template

API

在 API 中,您可以建構一般要求來建立執行個體,但要包含 sourceInstanceTemplate 查詢參數,後接執行個體範本的正確路徑。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances?sourceInstanceTemplate=[INSTANCE_TEMPLATE_NAME]

在要求主體中輸入 VM 執行個體的 name

{ "name": "example-instance" }

例如,下列程式碼片段包含範本的完整路徑:https://www.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-instance-template.

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances?sourceInstanceTemplate=https://www.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-instance-template

{ "name": "example-instance" }

利用執行個體範本與覆寫功能建立 VM 執行個體

使用執行個體範本啟動 VM 執行個體時,預設行為會完全依照執行個體範本說明所述建立 VM 執行個體,但執行個體名稱和區域例外。

如果您想主要根據執行個體範本建立執行個體,但稍做一些變更,可使用覆寫行為。如要使用覆寫行為,您可在建立執行個體時傳入屬性,以覆寫現有執行個體範本。

gcloud

使用 gcloud 工具提出要求,以 --source-instance-template 標記建立執行個體,然後以適當的 gcloud 標記覆寫您想要的任何屬性。如要查看適用標記清單,請參閱 gcloud 參考資料

例如,如要覆寫執行個體範本的機器類型、中繼資料、作業系統、開機永久磁碟和次要磁碟,請提供下列標記:

gcloud compute instances create example-instance --source-instance-template example-instance \
    --machine-type n1-standard-2 --image-family debian-8 --image-project debian-cloud \
    --metadata bread=butter --disk=boot=no,name=my-override-disk

API

在 API 中,建構一般要求以建立執行個體時,您可在要求主體中使用 sourceInstanceTemplate 查詢參數,並提供要覆寫的任何欄位。

API 中的覆寫行為遵守 JSON 合併修補規則,如 RFC 7396 所述。

具體內容包括:

  • 若覆寫原始欄位,執行個體範本中的對應原始欄位將替換成要求中的原始欄位值。原始欄位包括 machineTypesourceImagename 等。
  • 若覆寫重複欄位,該屬性的所有重複值都將替換成要求中提供的對應值。重複欄位通常是 list 類型的屬性。例如,disksnetworkInterfaces 是重複欄位。
  • 若覆寫 nested object,執行個體範本中的物件將與要求中的對應物件規格合併。請注意,如果巢狀物件存在於重複欄位之中,系統會依據重複欄位的規則處理欄位。此規則唯一的例外是標籤,即使標籤屬於 object 類型,也會將其視為重複欄位。

例如,假設您的執行個體範本有兩個非開機磁碟,而您想覆寫其中一個磁碟。您必須在要求中提供完整 disks 規格,包括您要保留的磁碟。

此要求的網址為:

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances?sourceInstanceTemplate=https://www.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-instance-template

要求主體:

{
  "disks": [
    {
      # Since you are overriding the repeated disk property, you must
      # specify a boot disk in the request, even if it is already
      # specified in the instance template
      "autoDelete": true,
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-8"
      },
      "mode": "READ_WRITE",
      "type": "PERSISTENT"
    },
    {
      # New disk you want to use
      "autoDelete": false,
      "boot": false,
      "mode": "READ_WRITE",
      "source": "zones/us-central1-f/disks/my-override-disk",
      "type": "PERSISTENT"
    },
    {
       # Assume this disk is already specified in instance template, but
       # you must specify it again since you are overriding the disks
       # property
      "autoDelete": false,
      "boot": false,
      "mode": "READ_WRITE",

      "source": "zones/us-central1-f/disks/my-other-disk-to-keep",
      "type": "PERSISTENT"
    }
  ],
  "machineType": "zones/us-central1-f/machineTypes/n1-standard-2",
  "name": "example-instance"
}

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件