在專案之間複製 VM

本文件說明如何將 VM 複製到其他專案。

事前準備

必要的角色

如要取得在專案之間複製 VM 所需的權限,請要求管理員為您授予專案的 Compute Instance Admin (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 專案上的
  • 如要在使用舊版網路時將外部 IP 位址指派給 VM,請按照下列步驟操作: compute.networks.useExternalIp 專案
  • 如要為 VM 指定子網路: compute.subnetworks.use 在專案或所選子網路上
  • 如要在使用虛擬私有雲網路時,將外部 IP 位址指派給 VM,請按照下列步驟操作: compute.subnetworks.useExternalIp 在專案或所選子網路上
  • 如要為 VM 設定 VM 執行個體中繼資料,請按照下列步驟操作: compute.instances.setMetadata 在專案中
  • 如要為 VM 設定標記: compute.instances.setTags 在 VM 上
  • 如要為 VM 設定標籤,請按照下列步驟操作: compute.instances.setLabels VM 上
  • 如要設定 VM 使用的服務帳戶,請按照下列步驟操作: compute.instances.setServiceAccount 在 VM 上
  • 如要為 VM 建立新磁碟,請按照下列步驟操作: compute.disks.create 專案
  • 如要以唯讀或讀寫模式連接現有磁碟: 磁碟的 compute.disks.use 權限
  • 如要以唯讀模式連接現有磁碟,請執行下列操作: compute.disks.useReadOnly 磁碟上的權限

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

將 VM 複製到其他專案

  1. 在來源專案中,使用下列任一指令建立 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:您要用來建立快照的區域永久磁碟磁區名稱。
    • SNAPSHOT_TYPE:快照類型,可選「標準」或「封存」。如果未指定快照類型,系統會建立 STANDARD 快照。選擇「封存」可以更低廉的成本保留資料。
    • SOURCE_DISK_ZONE:您要用來建立快照的區域永久磁碟磁區。

    區域性開機磁碟

    如果您的 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:您要用來建立快照的地區永久磁碟磁區名稱。
    • SOURCE_DISK_REGION:您要用來建立快照的地區永久磁碟磁區。
    • SNAPSHOT_TYPE:快照類型,可選「標準」或「封存」。如果未指定快照類型,系統會建立 STANDARD 快照。

  2. 使用下列指令,從快照建立自訂映像檔:

    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 會將映像檔儲存在最靠近映像檔來源位置的多地區。
  3. 選用步驟:與在目的專案中建立 VM 的使用者分享自訂映像檔。如要進一步瞭解如何共用自訂圖片,請參閱「在機構中共用自訂圖片」。

  4. 在目的專案中,使用下列指令從自訂映像檔建立 VM:

    gcloud compute instances create VM_NAME \
        --image-project IMAGE_PROJECT \
        IMAGE_FLAG \
        --subnet SUBNET
    

    更改下列內容:

    • VM_NAME:VM 名稱
    • IMAGE_PROJECT:包含圖片的 Trusted Cloud 專案 ID
    • IMAGE_FLAG:請指定下列任一值:
      • 使用 --image IMAGE_NAME 標記指定自訂映像檔。

        例如 --image my-debian-image-v2

      • 如果您將自訂映像檔建立為自訂映像檔系列的一部分,請使用 --image-family IMAGE_FAMILY_NAME 旗標指定該自訂映像檔系列。

        這會根據自訂映像檔系列中未淘汰的最新 OS 映像檔和 OS 版本建立 VM。舉例來說,如果您指定 --image-family my-debian-family,Compute Engine 會從自訂 my-debian-family 映像檔系列中的最新 OS 映像檔建立 VM。

    • SUBNET:如果子網路和執行個體位於同一個專案中,請將 SUBNET 替換為與執行個體位於同一地區的子網路名稱。

      如要在共用虛擬私有雲網路中指定子網路,請將 SUBNET 替換為以下格式的字串:

              projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
             

      更改下列內容:

      • HOST_PROJECT_ID:共用虛擬私有雲主專案的專案 ID
      • REGION:子網路的區域
      • SUBNET_NAME:子網路名稱

      共用虛擬私有雲網路的子網路區域也必須與包含執行個體的區域相符。

後續步驟

  • 自訂目的地專案的「VPC 網路」