本文說明如何將 VM 複製到其他專案。
事前準備
- 請參閱 永久磁碟快照的最佳做法,為開機磁碟建立快照做好準備。
-
如果尚未設定驗證,請先完成設定。
「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,向 Compute Engine 進行驗證:
-
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- 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
-
使用舊版網路時,如要將外部 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 複製到其他專案
在來源專案中,使用下列任一指令建立 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 或 ARCHIVE。如果未指定快照類型,系統會建立 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 或 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_FLAG \ --subnet SUBNET
更改下列內容:
VM_NAME
:VM 名稱IMAGE_PROJECT
:包含圖片的 Google Cloud 專案 IDIMAGE_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
:共用虛擬私有雲主專案的專案 IDREGION
:子網路的區域SUBNET_NAME
:子網路名稱
共用虛擬私有雲網路的子網路區域也必須與包含執行個體的區域相符。
後續步驟
- 自訂目的地專案的 VPC 網路。