가상 어플라이언스 가져오기


가상 어플라이언스는 가상 머신(VM) 인스턴스의 디스크 이미지 및 하드웨어 구성이 포함된 패키지입니다.

가상 어플라이언스에 널리 사용되는 형식은 OVF 형식입니다. 가상 어플라이언스를 OVF 형식으로 패키징하면 OVF 패키지가 생성됩니다. OVF 패키지는 하나의 .ovf 설명자 파일과 디스크 등의 기타 리소스 컬렉션이 포함된 폴더입니다. OVF 패키지가 단일 파일로 보관처리되면 이를 OVA 파일이라고 합니다.

OVF 형식의 VM이 OVF 패키지이든 OVA 단일 파일이든 Compute Engine으로 가져올 수 있습니다. 가상 어플라이언스가 사용 사례에 가장 적합한 선택인지 확인하려면 마이그레이션 경로 선택을 검토하세요.

가상 어플라이언스를 가져올 때 Compute Engine에 VM을 만들고 시작하기 위해 설명자 파일에 저장된 정보가 사용됩니다.

Compute Engine에서 다음과 같이 OVA 또는 OVF 파일을 가져올 수 있습니다.

시작하기 전에

  • 가상 어플라이언스를 가져오려는 프로젝트에 신뢰할 수 있는 이미지 정책이 정의되어 있으면 허용된 게시자 목록에 projects/compute-image-importprojects/compute-image-tools를 추가합니다.
  • 다른 프로젝트에서 가상 어플라이언스를 가져오는 경우에는 프로젝트 간 가져오기를 참조하세요.
  • 이미지를 가져오기 전에 요구사항을 충족하는 방법을 알아보려면 VM 이미지 가져오기 및 내보내기 기본 요건을 참조하세요.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.

요구사항

이 섹션에는 가상 어플라이언스를 Compute Engine으로 가져오기 위한 요구사항이 나와 있습니다.

소스 VM 요구사항

OVF 파일을 만드는 데 사용되는 VM은 다음 요구사항을 충족해야 합니다.

  • 가상 디스크는 VMDK 또는 VHD 형식이어야 합니다.
  • 가상 디스크는 암호화되지 않아야 합니다.

    VM이 요구사항을 충족하는지 확인하려면 사전 검사 도구를 실행하면 됩니다.

소스 VM의 운영체제가 다음 요구사항을 충족해야 합니다.

  • 모든 Windows 운영체제의 경우 PowerShell 버전 3 이상이 설치되어 있어야 합니다. 3.0 이전의 PowerShell 버전에서는 가져오기 프로세스 시에 사용되는 시작 및 종료 스크립트에서 문제가 발생할 수 있습니다.
  • 모든 Linux 배포판의 경우 부팅 디스크가 다음 요구사항을 충족해야 합니다.

    • 부팅 디스크에 GRUB이 설치되어 있어야 합니다.
    • 부팅 디스크는 물리적 디스크 여러 개에 걸쳐서는 안 됩니다. 논리 볼륨 관리자(LVM)를 사용하여 파티션을 나눈 디스크는 지원되지 않습니다. 디스크가 물리적 디스크 여러 개에 걸쳐 있는 경우 OVF 파일에서 생성된 VM이 Compute Engine에서 부팅되지 않을 수 있습니다.

OVF 파일 요구사항

OVF 파일은 다음 요구사항을 충족해야 합니다.

  • OVF 파일은 OVF 사양 문서에 설명된 대로 Level 1 이동성을 제공해야 합니다. Level 2 이동성을 충족하는 가상 어플라이언스를 가져올 수 있지만 소스 하이퍼바이저에 대한 구체적인 세부정보와 같은 커스텀 확장은 가져오기 프로세스 동안 무시됩니다.
  • OVF 파일에 VM이 하나만 포함되어야 합니다. VM이 여러 개인 경우 첫 번째 VM만 가져옵니다.
  • OVF 파일의 첫 번째 디스크는 부팅 가능해야 합니다.

권한

이미지를 가져올 때 원활한 환경을 제공하려면 필요한 IAM 역할을 계정, Cloud Build 서비스 계정, Compute Engine 서비스 계정에 부여했는지 확인합니다. 자세한 내용은 필요한 IAM 역할 부여를 참조하세요.

가져오기 도구로 가져오는 구성

OVF 표준은 가상화 제공업체에 종속되지 않는 방식으로 가상 어플라이언스를 패키징하는 프로세스를 지정합니다. OVF 가상 어플라이언스 패키지에는 하나의 .ovf 설명자 파일과 가상 디스크 등 기타 리소스 컬렉션이 포함됩니다.

OVF 가상 어플라이언스를 Compute Engine으로 가져오면 설명자 파일에서 다음 구성을 처리하여 가져옵니다.

  • 가상 디스크. OVF 패키지의 DiskSection 요소에서 검색한 정보입니다.
  • CPU 및 메모리. OVF 패키지의 ResourceAllocationSection에서 검색합니다.

    CPU 또는 메모리 구성이 Compute Engine에서 지원되는 범위 제한을 벗어나는 경우 가져오기 프로세스 중 값이 Compute Engine에서 지원되는 최댓값으로 설정됩니다.

  • 부팅 디스크. OVF 패키지의 BootDeviceSection 요소에서 검색한 세부정보입니다.

  • 게스트 OS. OVF 패키지의 OperatingSystemSection 요소에서 검색한 세부정보입니다.

    게스트 OS 정보는 올바른 드라이버 및 게스트 환경 패키지를 가져온 인스턴스에 설치하는 데 사용됩니다. OVF에서 찾은 게스트 OS 정보가 올바르지 않은 경우 가져오기가 실패합니다. --os 플래그를 사용하여 게스트 OS 정보를 재정의할 수 있습니다.

가져온 VM은 항상 외부 IP 주소가 있는 단일 네트워크 어댑터로 생성됩니다. 이 단일 네트워크 어댑터는 OVF 파일에 지정된 네트워킹 구성에 관계없이 사용됩니다. 외부 IP 주소가 없는 VM을 가져오려면 외부 IP 주소가 없는 VM 가져오기를 참조하세요.

가상 어플라이언스를 가져올 때 설명자 파일의 다음 섹션은 무시됩니다(가져오지 않음).

  • NetworkSection
  • AnnotationSection
  • ProductSection
  • EulaSection
  • StartupSection
  • DeploymentOptionSection
  • InstallSection
  • EnvironmentFilesSection
  • SharedDiskSection
  • ScaleOutSection
  • PlacementGroupSection
  • PlacementSection
  • EncryptionSection

제한사항

VPC 서비스 제어로 보호되는 프로젝트에서는 이 기능이 지원되지 않습니다.

지원되는 운영체제

원하는 경우 설명자 파일OperatingSystemSection 요소에서 운영체제를 지정하거나 gcloud compute instances import 명령어를 사용하여 가상 어플라이언스를 가져올 때 --os 플래그를 지정할 수 있습니다.

지원되는 운영체제에 대한 자세한 내용은 운영체제 세부정보를 참조하세요.

BYOL 및 BYOS 지원

기본적으로 Windows Server 및 Red Hat Enterprise Linux(RHEL) 운영체제를 사용하는 OVF 파일을 가져와서 추가 요금이 발생하는 프리미엄 OS 온디맨드 결제를 사용하도록 구성합니다.

자체 소프트웨어 라이선스 또는 구독을 사용하려는 경우 라이선스를 통해 가상 어플라이언스를 가져올 수 있습니다. BYOL 또는 BYOS를 지원하는 운영체제에 대한 자세한 내용은 운영체제 세부정보를 참조하세요.

gcloud compute instances import 명령어--byol 플래그를 사용해서 어플라이언스를 BYOL 라이선스 어플라이언스로 가져올 수 있습니다. OS를 수동으로 지정할 경우 --os 플래그를 사용해서 가져오려는 게스트 OS에 대해 byol 서픽스가 포함된 값을 지정합니다. 예를 들어 --os=rhel-8-byol은 기존 라이선스가 있는 RHEL 8 이미지를 가져옵니다.

프로젝트 간 가져오기

  • 소스 프로젝트: OVA 또는 OVF 파일이 저장된 프로젝트입니다.
  • 대상 프로젝트: VM 또는 머신 이미지를 만들 프로젝트입니다.

소스 프로젝트와 대상 프로젝트가 다른 경우 대상 프로젝트의 서비스 계정은 소스 프로젝트의 Cloud Storage 버킷에 액세스해야 합니다.

프로젝트 간에 가져오려면 다음 단계를 완료하세요.

  1. 소스 프로젝트에서 Cloud Storage 버킷을 찾습니다.
  2. Cloud Storage 버킷에서 roles/storage.objectViewer를 다음 서비스 계정에 부여합니다.

    • 대상 프로젝트의 Cloud Build 서비스 계정: 이 서비스 계정의 형식은 DESTINATION_PROJECT_NUMBER@cloudbuild.gserviceaccount.com입니다.
    • 대상 프로젝트의 Compute Engine 서비스 계정: 이 서비스 계정의 형식은 DESTINATION_PROJECT_NUMBER-compute@developer.gserviceaccount.com입니다.

    DESTINATION_PROJECT_NUMBER를 대상 프로젝트의 프로젝트 번호로 바꿉니다.

    Cloud Storage 버킷에 대한 액세스 권한을 부여하는 방법은 버킷 수준 정책에 주 구성원 추가를 참조하세요.

  3. 가상 어플라이언스 또는 머신 이미지를 가져옵니다.

가상 어플라이언스 가져오기

Google Cloud CLI 또는 REST를 사용하여 가상 어플라이언스를 가져올 수 있습니다.

OVA 파일 가져오기

gcloud

  1. 가상 어플라이언스를 Cloud Storage에 업로드합니다.
  2. OVA 파일을 Cloud Storage에서 Compute Engine으로 가져오려면 gcloud compute instances import 명령어를 사용합니다.

    gcloud compute instances import VM_NAME \
       --source-uri=gs:PATH_TO_OVA_FILE
    

    다음을 바꿉니다.

    • VM_NAME: 만들려는 인스턴스의 이름입니다.
    • PATH_TO_OVA_FILE: Cloud Storage의 OVA 파일 경로입니다.

    예시

    예를 들어 Ubuntu.ova OVA 파일을 가져오고 my-instance라는 인스턴스를 만들려면 다음 명령어를 실행합니다.

    gcloud compute instances import my-instance \
        --source-uri=gs://my-bucket/Ubuntu.ova
    

    OVF 설명자 파일의 게스트 OS 정보가 잘못되었거나 감지된 OS를 재정의하려는 경우 --os 플래그를 추가하여 운영체제를 지정할 수 있습니다. 지원되는 값 목록은 gcloud compute instances import 명령어의 --os 플래그 옵션을 참조하세요.

    예를 들어 Ubuntu.ova OVA 파일을 가져오고 Ubuntu 16.04를 실행하는 my-instance라는 인스턴스를 만들려면 다음 명령어를 실행합니다.

    gcloud compute instances import my-instance \
        --os=ubuntu-1604
        --source-uri=gs://my-bucket/Ubuntu.ova
    

REST

  1. 가상 어플라이언스를 Cloud Storage에 업로드합니다.

  2. Cloud Build APIPOST 요청을 전송합니다.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-instance-names=VM_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-zone=ZONE",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: OVA 파일을 가져올 프로젝트의 프로젝트 ID입니다.
    • VM_NAME: 만들려는 가상 머신 인스턴스의 이름입니다. 예를 들면 my-instance입니다.
    • SOURCE_URI: Cloud Storage에 저장된 OVA 파일의 URI입니다. 예를 들면 gs://my-bucket/my-instance.ova입니다.
    • ZONE: VM 인스턴스를 만들 영역입니다. 비워두면 프로젝트의 기본 영역이 사용됩니다.

    제공할 수 있는 추가 args 값은 Compute Engine OVF 가져오기 GitHub 페이지의 선택적 플래그 섹션을 참조하세요.

    응답 예시

    다음 샘플 응답은 반환된 출력과 유사합니다.

    {
    "name": "operations/build/myproject-12345/operation-1578608233418",
    "metadata": {
      "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata",
      "build": {
        "id": "3a2055bc-ccbd-4101-9434-d376b88b8940",
        "status": "QUEUED",
        "createTime": "2019-12-30T19:06:03.968694865Z",
        "steps": [
          {
            "name": "gcr.io/compute-image-tools/gce_ovf_import:release",
            "env": [
              "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
            ],
            "args": [
              "-instance-names=my-instance",
              "-ovf-gcs-path=gs://my-bucket/my-instance.ova",
              "-zone=asia-northeast2",
              "-client-id=api",
              "-timeout": "7056s"
            ]
          }
        ],
        "timeout": "7200s",
        "projectId": "myproject-12345",
        "logsBucket": "gs://12345.cloudbuild-logs.googleusercontent.com",
        "options": {
          "logging": "LEGACY"
        },
        "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=myproject-12345",
        "tags": [
          "gce-ovf-import"
        ]
      }
    }
    }
    

    빌드를 모니터링하려면 다음 방법 중 하나를 사용합니다.

    • 반환된 build-id를 사용하여 projects.builds.get 요청을 실행합니다.
    • 제공된 logUrl에서 호스팅된 로그를 검토합니다.

OVF 파일 가져오기

gcloud

  1. 가상 어플라이언스를 Cloud Storage에 업로드합니다.
  2. OVF 파일을 Cloud Storage에서 Compute Engine으로 가져오려면 gcloud compute instances import 명령어를 사용합니다.

    디렉터리에 OVF 파일이 하나만 있는 경우, 설명자 파일의 경로 또는 OVF 파일이 있는 디렉터리의 경로를 제공할 수 있습니다.

    • 설명자 파일의 경로를 사용하여 OVF 파일을 가져오려면 다음 명령어를 실행합니다.

      gcloud compute instances import VM_NAME \
       --source-uri=gs:PATH_TO_OVF_FILE
      
    • 디렉터리의 경로를 사용하여 OVF 파일을 가져오려면 다음 명령어를 실행합니다.

      gcloud compute instances import VM_NAME \
       --source-uri=gs:PATH_TO_OVF_DIRECTORY
      

    다음을 바꿉니다.

    • VM_NAME: 만들려는 인스턴스의 이름입니다.
    • PATH_TO_OVF_FILE: Cloud Storage의 OVF 파일 경로입니다.
    • PATH_TO_OVF_DIRECTORY: OVF 파일이 있는 Cloud Storage 디렉터리의 경로입니다.

    예시

    • my-ovf-directory 디렉터리에서 my-instance라는 인스턴스를 만드는 Ubuntu.ovf OVF 파일을 가져오려면 다음 명령어를 실행합니다.

      gcloud compute instances import my-instance \
       --source-uri=gs://my-bucket/my-ovf-directory/Ubuntu.ovf
      
    • my-instance 디렉터리에서 라는 인스턴스를 만드는 my-ovf-directory OVF 파일을 가져오려면 다음 명령어를 실행합니다.

      gcloud compute instances import my-instance \
       --source-uri=gs://my-bucket/my-ovf-directory
      

      OVF 설명자 파일의 게스트 OS 정보가 잘못되었거나 감지된 OS를 재정의하려는 경우 --os 플래그를 추가하여 운영체제를 지정할 수 있습니다. 지원되는 값 목록은 gcloud compute instances import 명령어의 --os 플래그 옵션을 참조하세요. 예를 들어 Ubuntu.ovf OVF 파일을 가져오려면 Ubuntu 16.04를 실행하는 my-instance라는 인스턴스를 만들고 다음 명령어를 실행합니다.

      gcloud compute instances import my-instance \
       --os=ubuntu-1604 \
       --source-uri=gs://my-bucket/my-ovf-directory/Ubuntu.ovf
      

REST

  1. 가상 어플라이언스를 Cloud Storage에 추가합니다.

  2. Cloud Build APIPOST 요청을 전송합니다.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-instance-names=VM_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-zone=ZONE",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: OVA 파일을 가져올 프로젝트의 프로젝트 ID입니다.
    • VM_NAME: 만들려는 가상 머신 인스턴스의 이름입니다. 예를 들면 my-instance입니다.
    • SOURCE_URI: Cloud Storage에 저장된 OVF 파일의 URI입니다. 예를 들면 gs://my-bucket/my-instance.ovf입니다.
    • OS: OVF 파일의 운영체제입니다. 예를 들면 ubuntu-1604입니다. --os 플래그는 기본적으로 선택사항이지만 이 플래그를 사용해서 감지된 OS를 재정의할 수 있습니다. 지원되는 값 목록은 gcloud compute instances import 명령어의 --os 플래그 옵션을 참조하세요.
    • ZONE: VM 인스턴스를 만들 영역입니다. 비워두면 프로젝트의 기본 영역이 사용됩니다.

    제공할 수 있는 추가 args 값은 Compute Engine OVF 가져오기 GitHub 페이지의 선택적 플래그 섹션을 참조하세요.

    응답 예시

    다음 샘플 응답은 반환된 출력과 유사합니다.

    {
    "name": "operations/build/myproject-12345/operation-1578608233418",
    "metadata": {
      "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata",
      "build": {
        "id": "3a2055bc-ccbd-4101-9434-d376b88b8940",
        "status": "QUEUED",
        "createTime": "2019-12-30T19:06:03.968694865Z",
        "steps": [
          {
            "name": "gcr.io/compute-image-tools/gce_ovf_import:release",
            "env": [
              "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
            ],
            "args": [
              "-instance-names=my-instance",
              "-ovf-gcs-path=gs://my-bucket/my-instance.ovf",
              "-os=ubuntu-1404",
              "-zone=asia-south1",
              "-client-id=api",
              "-timeout": "7056s"
            ]
          }
        ],
        "timeout": "7200s",
        "projectId": "myproject-12345",
        "logsBucket": "gs://12345.cloudbuild-logs.googleusercontent.com",
        "options": {
          "logging": "LEGACY"
        },
        "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=myproject-12345",
        "tags": [
          "gce-ovf-import"
        ]
      }
    }
    }
    

    빌드를 모니터링하는 몇 가지 방법은 다음과 같습니다.

    • 반환된 build-id를 사용하여 projects.builds.get 요청을 실행합니다.
    • 제공된 logUrl에 호스팅된 로그를 검토합니다.

커스텀 설정으로 가져오기

커스텀 CPU 및 메모리

gcloud

OVF 파일에 지정된 CPU 또는 메모리 구성을 대체하려면 Google Cloud CLI 단계에 따라 OVA 가져오기 또는 OVF 파일 가져오기를 수행하고 --custom-cpu--custom-memory 플래그를 지정합니다.

예시

예를 들어 CPU 2개와 2,048MB의 메모리가 있는 my-instance라는 인스턴스를 가져오려면 다음 명령어를 실행합니다.

gcloud compute instances import my-instance \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --custom-cpu=2 --custom-memory=2048MB

REST

OVF 파일에 지정된 CPU 또는 메모리 구성을 재정의하려면 Cloud Build API 단계를 따라 OVA 파일 가져오기 또는 OVF 파일 가져오기를 실행하고 -machine-type 인수를 지정합니다. 이 -machine-type은 사용할 사전 정의된 머신 유형 또는 커스텀 머신 유형을 나타냅니다.

예시

예를 들어 CPU 2개와 2,048MB의 메모리가 있는 my-instance라는 인스턴스를 가져오려면 다음 요청을 실행합니다. PROJECT_ID를 프로젝트 ID로 바꿉니다.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-instance-names=my-instance",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-machine-type=custom-2-2048",
        "-zone=asia-south1",
        "-client-id=api",
        "-timeout=7056s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":[
    "gce-ovf-import"
  ]
}

커스텀 네트워크

커스텀 네트워크는 이미지를 가져오는 동일한 프로젝트에서 정의되어야 합니다.

gcloud

커스텀 네트워크를 사용하려면 Google Cloud CLI 단계에 따라 OVA 파일 가져오기 또는 OVF 파일 가져오기를 실행하고 --network 플래그를 지정합니다. 네트워크가 커스텀 서브넷 모드로 구성된 경우 --subnet--zone 플래그도 지정해야 합니다.

예시 1: 커스텀 네트워크 사용

예를 들어 다음과 같은 속성을 가정해 보겠습니다.

  • VM 이름: my-instance
  • 네트워크: custom-vpc-network
  • 서브넷: company-vpc-us-east1-c
  • 영역: us-east1-c

다음 명령어를 실행하여 위의 속성이 있는 인스턴스를 가져옵니다. SERVICE_PROJECT_ID를 가상 어플라이언스를 가져올 프로젝트의 ID로 바꿉니다.

gcloud compute instances import my-instance \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --project SERVICE_PROJECT_ID \
    --network custom-vpc-network \
    --subnet company-vpc-us-east1-c \
    --zone us-east1-c

예시 2: 커스텀 네트워크 사용(공유 VPC)

예를 들어 다음과 같은 속성을 가정해 보겠습니다.

  • VM 이름: my-instance-2
  • 네트워크: my-shared-vpc
  • 서브넷: my-shared-subnet
  • 영역: us-east1-c

위의 속성이 있는 VM을 가져오려면 다음 단계를 완료하세요.

  1. Cloud Build 서비스 계정에 compute.networkUser 역할을 추가합니다. 자세한 내용은 Cloud Build 서비스 계정에 필요한 역할 부여를 참조하세요.

  2. VM을 가져옵니다.

    gcloud compute instances import my-instance-2 \
       --source-uri gs://my-bucket/Ubuntu.ova \
       --project SERVICE_PROJECT_ID \
       --network projects/HOST_PROJECT_ID/global/networks/my-shared-vpc \
       --subnet projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/my-shared-subnet
       --zone us-east1-c
    

    다음을 바꿉니다.

    • SERVICE_PROJECT_ID: 가상 어플라이언스를 가져올 프로젝트의 ID입니다.
    • HOST_PROJECT_ID: 공유 VPC가 있는 프로젝트의 ID입니다.

REST

커스텀 네트워크를 사용하려면 Cloud Build API 단계에 따라 OVA 파일 가져오기 또는 OVF 파일 가져오기를 실행하고 -network 인수를 지정합니다. 네트워크가 커스텀 서브넷 모드로 구성되어 있으면 -subnet-zone 인수도 지정해야 합니다.

예시: 커스텀 네트워크 사용

예를 들어 다음과 같은 속성을 가정해 보겠습니다.

  • VM 이름: my-instance
  • 네트워크: custom-vpc-network
  • 서브넷: company-vpc-us-east1-c
  • 영역: us-east1-c

위의 속성이 있는 인스턴스를 가져오려면 다음 POST 요청을 만듭니다. SERVICE_PROJECT_ID를 가상 어플라이언스를 가져올 프로젝트의 ID로 바꿉니다.

POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-instance-names=my-instance",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-zone=us-east1-c",
        "-network=custom-vpc-network",
        "-subnet=company-vpc-us-east1-c",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":[
    "gce-ovf-import"
  ]
}

예시 2: 커스텀 네트워크 사용(공유 VPC)

예를 들어 다음과 같은 속성을 가정해 보겠습니다.

  • VM 이름: my-instance-2
  • 네트워크: my-shared-vpc
  • 서브넷: my-shared-subnet
  • 영역: us-east1-c

위의 속성이 있는 VM을 가져오려면 다음 단계를 완료하세요.

  1. Cloud Build 서비스 계정에 compute.networkUser 역할을 추가합니다. 자세한 내용은 Cloud Build 서비스 계정에 필요한 역할 부여를 참조하세요.

  2. 다음 POST 요청을 만들어 VM을 가져옵니다.

    POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds
    {
     "timeout":"7200s",
     "steps":[
       {
         "args":[
           "-instance-names=my-instance-2",
           "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
           "-zone=us-east1-c",
           "-network=projects/HOST_PROJECT_ID/global/networks/my-shared-vpc",
           "-subnet=projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/my-shared-subnet",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    다음을 바꿉니다.

    • SERVICE_PROJECT_ID: 가상 어플라이언스를 가져올 프로젝트의 ID입니다.
    • HOST_PROJECT_ID: 공유 VPC가 있는 프로젝트의 ID입니다.

외부 IP 주소를 허용하지 않는 네트워크를 사용하여 VM 가져오기

외부 IP 주소를 허용하지 않는 네트워크를 사용하여 VM을 가져오려면 다음 단계를 완료하세요.

  1. 가상 어플라이언스를 Cloud Storage에 추가합니다.

  2. 가져오기 프로세스를 수행하려면 VM의 운영체제에 패키지 관리자를 설치해야 합니다. 이러한 패키지 관리자는 Google Cloud 외부의 패키지 저장소를 요청해야 할 수 있습니다. 이러한 업데이트의 액세스를 허용하려면 Cloud NAT를 구성해야 합니다. 자세한 내용은 Cloud Router를 사용하여 NAT 구성 만들기를 참조하세요.

  3. 비공개 Google 액세스를 구성합니다. 자세한 내용은 비공개 Google 액세스 구성을 참조하세요.

  4. Google Cloud CLI 또는 REST를 사용하여 VM을 가져옵니다.

    가상 어플라이언스에서 VM을 만들면 프로젝트에 임시 VM이 생성됩니다. 이러한 임시 VM에 외부 IP 주소가 할당되지 않도록 하려면 추가 플래그 또는 인수를 지정해야 합니다.

    자세한 내용을 보려면 다음 탭을 클릭하세요.

gcloud

Cloud Storage에서 Compute Engine으로 가상 어플라이언스를 가져오려면 --no-address 플래그를 사용하여 gcloud compute instances import 명령어를 사용합니다.

gcloud compute instances import VM_NAME \
    --source-uri=SOURCE_URI \
    --zone=ZONE \
    --no-address

다음을 바꿉니다.

  • VM_NAME: 만들려는 인스턴스의 이름입니다.
  • SOURCE_URI: Cloud Storage에서 OVA 또는 OVF 파일의 URI입니다. 예를 들면 gs://my-bucket/Ubuntu.ova입니다.
  • ZONE: 가상 어플라이언스를 만들 영역입니다. 비워두면 프로젝트의 기본 영역이 사용됩니다.

REST

외부 IP에 대한 재정의로 Cloud Build API를 사용하여 외부 IP가 없는 VM을 가져올 수 있습니다.

OVF 파일에 지정된 외부 IP 설정을 재정의하려면 OVA 파일 또는 OVF 파일을 가져오고 -no-external-ip 인수를 지정하는 Cloud Build API의 단계를 따르세요.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-instance-names=VM_NAME",
        "-ovf-gcs-path=SOURCE_FILE",
        "-no-external-ip",
        "-zone=ZONE",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":[
    "gce-ovf-import"
  ]
}

다음을 바꿉니다.

  • PROJECT_ID: 이미지를 가져올 프로젝트의 프로젝트 ID입니다.
  • VM_NAME: 만들 VM의 이름입니다.
  • SOURCE_FILE: Cloud Storage의 이미지 URI입니다. 예를 들면 gs://my-bucket/Ubuntu.ova입니다.
  • ZONE: 이미지를 만들 영역입니다. 비워두면 프로젝트의 기본 영역이 사용됩니다.

UEFI 부트로더가 포함된 OVA 파일 가져오기

gcloud

gcloud compute instances import 명령어를 사용해서 UEFI 부팅을 사용하도록 가져오기를 적용할 수 있습니다.

gcloud compute instances import VM_NAME \
  --source-uri=SOURCE_URI \
  --guest-os-features=UEFI_COMPATIBLE

다음을 바꿉니다.

  • VM_NAME: 만들려는 인스턴스의 이름입니다.
  • SOURCE_URI: Cloud Storage에서 OVA 또는 OVF 파일의 URI입니다. 예를 들면 gs://my-bucket/Ubuntu.ova입니다.

REST

Cloud Build API를 사용하고 -uefi-compatible 인수를 지정하여 UEFI 부트로더가 포함된 OVA 파일을 가져올 수 있습니다.

  1. 가상 어플라이언스를 Cloud Storage에 업로드합니다.

  2. API에서 Cloud Build API에 대한 POST 요청을 만듭니다.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-instance-names=VM_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-uefi-compatible",
           "-zone=ZONE",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: OVA 파일을 가져올 프로젝트의 프로젝트 ID입니다.
    • VM_NAME: 만들려는 가상 머신 인스턴스의 이름입니다. 예를 들면 my-instance입니다.
    • SOURCE_URI: Cloud Storage에 저장된 OVA 파일의 URI입니다. 예를 들면 gs://my-bucket/my-instance.ova입니다.
    • ZONE: VM 인스턴스를 만들 영역입니다. 비워두면 프로젝트의 기본 영역이 사용됩니다.

커스텀 서비스 계정을 사용하여 가상 어플라이언스 가져오기

가상 어플라이언스를 가져오는 동안 프로젝트에 임시 가상 머신(VM) 인스턴스가 생성됩니다. 이러한 임시 VM의 가져오기 도구는 인증을 받아야 합니다.

서비스 계정은 VM에 연결된 ID입니다. 서비스 계정 액세스 토큰은 인스턴스 메타데이터 서버를 통해 액세스할 수 있으며 VM에서 내보내기 도구를 인증하는 데 사용됩니다.

기본적으로 가져오기 프로세스는 기본 Compute Engine 서비스 계정을 사용합니다. 그러나 프로젝트에서 기본 Compute Engine 서비스 계정이 사용 중지된 경우 또는 커스텀 Compute Engine 서비스 계정을 사용하려는 경우 서비스 계정을 만들고 가져오기 프로세스에 지정해야 합니다.

gcloud

  1. 가상 어플라이언스를 Cloud Storage에 추가합니다.

  2. 서비스 계정을 만들고 최소 역할을 할당합니다. 서비스 계정 만들기에 대한 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요.

    지정된 Compute Engine 서비스 계정에는 최소한 다음 역할이 할당되어 있어야 합니다.

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    이러한 최소 역할은 --compute-service-account 플래그에 지정된 서비스 계정에 필요합니다. 자세한 내용은 Compute Engine 서비스 계정에 필요한 역할 부여를 참조하세요.

  3. gcloud compute instances import 명령어를 사용하여 가상 어플라이언스를 가져옵니다.

    gcloud compute instances import VM_NAME \
    --source-uri=SOURCE_URI \
    --zone=ZONE \
    --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --scopes=SCOPES
    

    다음을 바꿉니다.

    • VM_NAME: 만들려는 인스턴스의 이름입니다.
    • SOURCE_URI: Cloud Storage에서 OVA 또는 OVF 파일의 URI입니다. 예를 들면 gs://my-bucket/Ubuntu.ova입니다.
    • ZONE: 가상 어플라이언스를 만들 영역입니다. 비워두면 프로젝트의 기본 영역이 사용됩니다.
    • TEMP_SERVICE_ACCOUNT_EMAIL: 이전 단계에서 만든 커스텀 서비스 계정과 연결된 이메일 주소입니다. 이 서비스 계정은 임시 VM에서 사용됩니다. 지정하지 않을 경우 VM은 기본 Compute Engine 서비스 계정을 사용합니다.
    • SERVICE_ACCOUNT_EMAIL: 가져오기 프로세스에서 만든 VM에 연결할 커스텀 서비스 계정과 연결된 이메일 주소입니다. 이 서비스 계정에는 권한 제한이 없으므로 필요에 따라 이 서비스 계정을 맞춤설정할 수 있습니다. 지정하지 않을 경우 기본 Compute Engine 서비스 계정이 VM에 연결됩니다.
    • SCOPES: --service-account 옵션의 액세스 수준을 지정합니다. 지정하지 않을 경우 기본 범위가 사용됩니다. 자세한 내용은 --scopes 플래그를 참조하세요.

REST

  1. 가상 어플라이언스를 Cloud Storage에 추가합니다.

  2. 서비스 계정을 만들고 최소 역할을 할당합니다. 서비스 계정 만들기에 대한 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요.

    지정된 Compute Engine 서비스 계정에는 최소한 다음 역할이 할당되어 있어야 합니다.

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    이러한 최소 역할은 -compute-service-account 인수에 지정된 서비스 계정에 필요합니다. 자세한 내용은 Compute Engine 서비스 계정에 필요한 역할 부여를 참조하세요.

  3. API에서 Cloud Build API에 대한 POST 요청을 만듭니다.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
      "timeout":"7200s",
      "steps":[
        {
          "args":[
            "-instance-names=VM_NAME",
            "-ovf-gcs-path=SOURCE_FILE",
            "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL",
            "-service-account=SERVICE_ACCOUNT_EMAIL",
            "-zone=ZONE",
            "-scopes=SCOPES",
            "-client-id=api",
            "-timeout=7000s"
          ],
          "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
          "env":[
            "BUILD_ID=$BUILD_ID"
          ]
        }
      ],
      "tags":[
        "gce-ovf-import"
      ]
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 이미지를 가져올 프로젝트의 프로젝트 ID입니다.
    • VM_NAME: 만들 VM의 이름입니다.
    • SOURCE_FILE: Cloud Storage의 이미지 URI입니다. 예를 들면 gs://my-bucket/Ubuntu.ova입니다.
    • ZONE: 이미지를 만들 영역입니다. 비워두면 프로젝트의 기본 영역이 사용됩니다.
    • TEMP_SERVICE_ACCOUNT_EMAIL: 이전 단계에서 만든 커스텀 서비스 계정과 연결된 이메일 주소입니다. 이 서비스 계정은 임시 VM에서 사용됩니다. 지정하지 않을 경우 VM은 기본 Compute Engine 서비스 계정을 사용합니다.
    • SERVICE_ACCOUNT_EMAIL: 가져오기 프로세스에서 만든 VM에 연결할 커스텀 서비스 계정과 연결된 이메일 주소입니다. 이 서비스 계정에는 권한 제한이 없으므로 필요에 따라 이 서비스 계정을 맞춤설정할 수 있습니다. 지정하지 않을 경우 기본 Compute Engine 서비스 계정이 VM에 연결됩니다.
    • SCOPES: -service-account 옵션의 액세스 수준을 지정합니다. 지정하지 않을 경우 기본 범위가 사용됩니다. 자세한 내용은 --scopes 플래그를 참조하세요.

다음 단계