이 문서에서는 VM을 다른 프로젝트에 복사하는 방법을 설명합니다.
시작하기 전에
- 영구 디스크 스냅샷 권장사항을 검토하고 스냅샷을 위한 부팅 디스크를 준비합니다.
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
필요한 역할
프로젝트 간에 VM을 복사하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Compute 인스턴스 관리자(v1)(roles/compute.instanceAdmin.v1
) IAM 역할에 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 프로젝트 간에 VM을 복사하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
프로젝트 간에 VM을 복사하려면 다음 권한이 필요합니다.
- 프로젝트에 대한
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
권한
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
다른 프로젝트에 VM 복사
소스 프로젝트에서 다음 명령어 중 하나를 사용하여 VM의 부팅 디스크의 스냅샷을 만듭니다.
영역 부팅 디스크
VM에 영역 부팅 디스크가 있는 경우 다음 명령어를 사용하여 스냅샷을 만듭니다.
gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --snapshot-type SNAPSHOT_TYPE \ --source-disk-zone SOURCE_DISK_ZONE
다음을 바꿉니다.
- SNAPSHOT_NAME: 스냅샷의 이름
- SOURCE_DISK: 스냅샷을 만들려는 영역 Persistent Disk 볼륨의 이름
- SNAPSHOT_TYPE: 스냅샷 유형(STANDARD 또는 ARCHIVE). 스냅샷 유형을 지정하지 않으면 STANDARD 스냅샷이 생성됩니다. 비용 효율적인 데이터 보관을 위해서는 보관처리 스냅샷을 선택합니다.
- SOURCE_DISK_ZONE: 스냅샷을 만들려는 영역 Persistent Disk 볼륨의 영역
리전 부팅 디스크
VM에 리전 부팅 디스크가 있는 경우 다음 명령어를 사용하여 스냅샷을 만듭니다.
gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --source-disk-region=SOURCE_DISK_REGION \ --snapshot-type=SNAPSHOT_TYPE
다음을 바꿉니다.
- SNAPSHOT_NAME: 스냅샷의 이름
- SOURCE_DISK: 스냅샷을 만들려는 리전 Persistent Disk 볼륨의 이름
- SOURCE_DISK_REGION: 스냅샷을 만들려는 리전 Persistent Disk의 리전
- SNAPSHOT_TYPE: 스냅샷 유형(STANDARD 또는 ARCHIVE). 스냅샷 유형을 지정하지 않으면 STANDARD 스냅샷이 생성됩니다.
다음 명령어를 사용하여 스냅샷에서 커스텀 이미지를 만듭니다.
gcloud compute images create IMAGE_NAME \ --source-snapshot=SOURCE_SNAPSHOT \ [--storage-location=LOCATION]
다음을 바꿉니다.
IMAGE_NAME
: 새 이미지의 이름입니다.SOURCE_SNAPSHOT
: 이미지를 만들 스냅샷입니다.LOCATION
: (선택 사항) 이미지가 저장되는 리전 또는 멀티 리전을 지정할 수 있는 플래그입니다. 예를 들어us
를 지정하여us
멀티 리전에 이미지를 저장하거나us-central1
을 지정하여us-central1
리전에 저장합니다. 선택하지 않으면 Compute Engine은 이미지의 소스 위치와 가장 가까운 멀티 리전에 이미지를 저장합니다.
선택사항: 대상 프로젝트에서 VM을 만드는 사용자와 커스텀 이미지를 공유합니다. 커스텀 이미지 공유에 대한 자세한 내용은 조직 내에서 커스텀 이미지 공유를 참조하세요.
대상 프로젝트에서 다음 명령어를 사용하여 커스텀 이미지에서 VM을 만듭니다.
gcloud compute instances create VM_NAME \ --image-project IMAGE_PROJECT \ [--image IMAGE | --image-family IMAGE_FAMILY] --subnet SUBNET
다음을 바꿉니다.
VM_NAME
: VM 이름IMAGE_PROJECT
: 이미지가 포함된 프로젝트 IDIMAGE
또는IMAGE_FAMILY
: 다음 중 하나를 지정합니다.IMAGE
: 커스텀 이미지의 이름.예를 들면
--image=my-debian-image-v2
입니다.IMAGE_FAMILY
: 커스텀 이미지 계열의 일부로 커스텀 이미지를 만든 경우 해당 커스텀 이미지 계열을 지정합니다.이렇게 하면 커스텀 이미지 계열에서 지원 중단되지 않은 최신 OS 이미지와 OS 버전에서 VM이 생성됩니다. 예를 들어
--image-family=my-debian-family
를 지정하면 Compute Engine이 커스텀my-debian-family
이미지 계열에서 최신 OS 이미지를 사용하여 VM을 만듭니다.
SUBNET
: 서브넷과 인스턴스가 같은 프로젝트에 있으면 SUBNET을 인스턴스와 동일한 리전에 있는 서브넷의 이름으로 바꿉니다.공유 VPC 네트워크에서 서브넷을 지정하려면
SUBNET
을 다음 형식의 문자열로 바꿉니다.projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
다음을 바꿉니다.
HOST_PROJECT_ID
: 공유 VPC 호스트 프로젝트의 프로젝트 IDREGION
: 서브넷 리전SUBNET_NAME
: 서브넷 이름
공유 VPC 네트워크의 서브넷 리전도 인스턴스가 포함된 리전과 일치해야 합니다.
다음 단계
- 대상 프로젝트의 VPC 네트워크를 맞춤설정합니다.