인스턴스 템플릿에서 VM 인스턴스 만들기

이 페이지에서는 인스턴스 템플릿을 사용하여 VM 인스턴스를 만드는 방법을 설명합니다. 인스턴스 템플릿은 VM 인스턴스의 속성을 정의하는 API 리소스입니다. 인스턴스 템플릿에서 머신 유형, OS 이미지, 영구 디스크 구성, 메타데이터, 시작 스크립트 등의 속성을 정의한 다음 해당 인스턴스 템플릿을 사용하여 개별 VM 인스턴스 또는 관리형 인스턴스의 그룹을 만들 수 있습니다.

인스턴스 템플릿에서 VM 인스턴스를 만들 때 기본 동작은 VM 인스턴스 이름과 해당 인스턴스가 위치할 영역을 제외하고 템플릿에 지정된 속성과 동일한 VM 인스턴스를 만드는 것입니다. 또는 인스턴스 템플릿의 특정 속성을 특정 용도를 위해 변경하려는 경우 인스턴스를 만드는 도중 특정 필드를 선택적으로 재정의할 수도 있습니다.

이 문서에서는 즉시 사용 가능한 인스턴스 템플릿이 있다고 가정합니다. 인스턴스 템플릿이 없는 경우 안내에 따라 새 인스턴스 템플릿을 만듭니다.

시작하기 전에

인스턴스 템플릿에서 VM 인스턴스 만들기

인스턴스 템플릿에 설명된 대로 정확히 인스턴스를 만들려면 다음 안내를 따릅니다.

콘솔

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 인스턴스 만들기를 클릭합니다.
  3. 템플릿에서 VM 인스턴스 만들기를 클릭합니다.
  4. 템플릿을 선택하고 계속을 클릭합니다.
  5. 인스턴스 이름을 지정하고 필요에 따라 추가로 맞춤설정을 수행합니다.
  6. 만들기를 클릭합니다. 추가적인 설정 세부정보는 인스턴스 만들기를 읽어보세요.

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의 재정의 동작은 RFC 7396에서 설명하는 JSON 병합 패치 규칙을 따릅니다.

구체적으로는 다음과 같습니다.

  • 원시 필드를 재정의하면 인스턴스 템플릿의 해당 원시 필드가 요청의 원시 필드 값으로 바뀝니다. 원시 필드에는 machineType, sourceImage, name 등이 포함됩니다.
  • 반복 필드를 재정의하면 해당 속성의 반복되는 모든 값이 요청에 제공된 해당 값으로 바뀝니다. 반복 필드는 일반적으로 list 유형의 속성입니다. 예를 들어 disksnetworkInterfaces는 반복되는 필드입니다.
  • nested object를 재정의하면 인스턴스 템플릿의 객체가 요청의 해당 객체 사양과 병합됩니다. 중첩된 객체가 반복 필드 내에 있는 경우 해당 필드는 반복 필드의 규칙에 따라 처리됩니다. 라벨은 이 규칙의 예외이며 object 유형이더라도 반복 필드로 간주됩니다.

예를 들어 2개의 비부팅 디스크가 포함된 인스턴스 템플릿이 있으나 그중 하나의 디스크를 재정의하고자 한다고 가정해 보겠습니다. 유지할 모든 디스크를 포함하여 요청에 전체 disks 사양을 제공해야 합니다.

이 요청의 URL은 다음과 같습니다.

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 문서