本頁面將協助您為產品建構能在 Compute Engine 上執行的公開機器映像檔。
映像檔包含啟動載入程式、作業系統,以及啟動執行個體時需要的根檔案系統。您可以為產品設定一組應用程式和服務,客戶會使用該映像檔,在雲端啟動虛擬機器 (VM) 執行個體。
建議您先在開發專案中建立映像檔,等 Google 合作夥伴工程師驗證該映像檔之後,您再將其移到公開專案。
事前準備
- 下載 Google Cloud SDK。
建立基礎產品 VM
如要為 Cloud Marketplace 建立自訂機器映像檔,請完成下列步驟 (後續章節會提供說明):
使用 Google 支援的基本公開映像檔建立 VM,然後安裝應用程式專用套件和設定。
您可以選擇使用 Arm 處理器的映像檔,也可以選擇使用 x86 處理器的映像檔。您也可以在一個 VM 產品中加入多張圖片,指定不同機器類型。如要進一步瞭解 CPU 平台和支援的機器類型,請參閱CPU 平台。
如要為顧客提供支援,請安裝指令碼來擷取應用程式使用者憑證。
建立授權的 VM 映像檔
使用 gcloud 為 Google Cloud CLI 設定預設值:
gcloud config set project <project_id> gcloud config set compute/zone <zone>
建立主要執行個體。這個執行個體會用於安裝您的軟體,之後則會轉換成在 Cloud Marketplace 上使用的映像檔。如要進一步瞭解如何建立執行個體,請參閱「建立和啟動執行個體」一文。
gcloud compute instances create ${INSTANCE} --scopes https://www.googleapis.com/auth/cloud-platform
安裝及自訂軟體。請納入任何必要的開機指令碼,例如用於建立授權憑證的指令碼。
如要使用隨機產生的安全密碼建立授權憑證,請按照下一節「建立授權憑證」中的步驟操作。
您建立及自訂主要執行個體後,請準備建立 VM 映像檔時需要用到的磁碟。
清除磁碟。如果直接從您的 VM 建立 VM 映像檔,系統也會將您的使用者目錄和 SSH 金鑰組轉移到客戶的 VM,因此您必須在建立 VM 映像檔時清除輸入磁碟。
清除磁碟的方式如下:
在 Compute Engine 的「VM Instances」(VM 執行個體) 選單中,按一下要清除的執行個體名稱,然後按一下「Edit」(編輯)。
向下捲動並取消勾選「刪除執行個體時一併刪除開機磁碟」核取方塊,然後按一下「儲存」。您可以使用磁碟建立映像檔。
刪除 VM 但保留磁碟。系統會提示您確認是否要刪除。請勿選取「Also delete boot disk」(一併刪除開機磁碟)。
接下來,您必須建立新的 VM 執行個體。展開「管理」、「磁碟」、「網路」和「安全殼層金鑰」選項。
在「disk」(磁碟) 底下,連結先前執行個體的磁碟做為額外的資料磁碟使用。確認「When deleting instance」(刪除執行個體時) 的選項是指定為「Keep disk」(保留磁碟)。
您現在可透過安全殼層進入執行個體,並移除在軟體安裝過程中建立的任何主目錄或其他暫存檔案。您必須先掛接資料磁碟才能存取。如需有關掛接磁碟的詳細資訊,請參閱「新增永久磁碟或調整其大小」一文。
完成後,請關機並刪除執行個體,並且保留更新後的資料磁碟。接下來您只要完成以下步驟,即可建立 VM 映像檔。
如要在 Producer Portal 中取得 VM 產品的授權名稱,請按照下列步驟操作:
在 Google Cloud 控制台中開啟 Producer Portal:
https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
將 YOUR_PROJECT_ID 替換為開發或公開專案的 ID。建議您先在開發專案中建立映像檔,等 Google 合作夥伴工程師驗證該映像檔之後,您再將其移到公開專案。
按一下產品名稱。
前往「部署套件」部分。在「VM license」(VM 授權) 下方,記下名稱。您會在下一個步驟建立映像檔時用到這個授權名稱。
執行下列
gcloud指令來建立授權的映像檔:gcloud compute images create CREATE_IMAGE_NAME \ --project PUBLIC_PROJECT_NAME \ --source-disk projects/DEV_PROJECT_NAME/zones/SOURCE_DISK_ZONE/disks/SOURCE_DISK_NAME \ --licenses LICENSE_NAME \ --description ADD_DESCRIPTION
更改下列內容:
CREATE_IMAGE_NAME:映像檔名稱和支援的 CPU 架構,格式為
who-vmOS-image-architecture-date,並視映像檔支援的 CPU 架構,將architecture替換為Arm或x86_64。每次更新產品圖片時,都必須使用新的不重複名稱。PUBLIC_PROJECT_NAME:Cloud Marketplace 公開專案的專案 ID。您必須具備這個專案的Compute Storage 管理員角色 (
roles/compute.storageAdmin)。LICENSE_NAME:您在上一步中記下的 VM 產品授權名稱。
DEV_PROJECT_NAME:您為 Cloud Marketplace 開發及測試所建立的專案 ID。您必須具備這項專案的 Compute 映像檔使用者角色 (
roles/compute.imageUser)。SOURCE_DISK_ZONE:來源磁碟的可用區。
SOURCE_DISK_NAME:來源磁碟的名稱。
ADD_DESCRIPTION:(選填) 建立圖片的文字說明。
將映像檔設為公開
如果是非 Terraform 產品,且未使用 Marketplace 擁有的映像檔,您必須將映像檔設為可供公開使用,這樣客戶才能將映像檔部署到各自的 Compute Engine 執行個體。如要將映像檔設為公開,請使用Google Cloud 控制台或 Google Cloud CLI:
控制台
在公開專案中的 Compute Engine 底下,前往「Images」(映像檔) 頁面。
選取您的映像檔,如下所示:

如果右上角未顯示資訊面板,請按一下「顯示資訊面板」。
在資訊面板的「Add Members」(新增成員) 欄位中輸入
allAuthenticatedUsers,然後從「Select a role」(選取角色) 選單中選取「Compute Image User」(Compute 映像檔使用者)。
按一下 [Add] (新增),將映像檔設為公開。
指令列
在 Cloud Shell 或本機電腦上使用下列 gcloud 指令:
gcloud compute images add-iam-policy-binding IMAGE_NAME --member=allAuthenticatedUsers --role=roles/compute.imageUser
建立授權憑證
如果您的產品是簡單的單一 VM 執行個體部署作業,且具備基本防火牆規則,那麼直接設定部署套件時,可以自動加入安全隨機密碼。
如果您打算使用開放原始碼 mpdev 工具建立部署套件 (建議用於大多數用途),則可使用 mpdev 自動納入多個隨機產生的安全密碼。
如需建立授權憑證的操作步驟,請參閱建立部署套件。
產品部署完成後,如要取得您建立的任何密碼值,請在 VM 執行個體中執行下列指令:
curl -H "Metadata-Flavor: Google" \ http://metadata/computeMetadata/v1/instance/attributes/PASSWORD_NAME
測試 VM 映像檔
以新建的映像檔建立 VM 執行個體,並驗證功能。
此外,如要驗證授權 ID,請透過 SSH 進入執行個體並確認已連結有效授權。
curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/licenses/?recursive=true
確認是否已安裝 Python 2.6 以上版本:
python -V確認已安裝下列套件:
gcloud --version ssh -V ps aux | grep sshd curl -V ps aux | grep dhcp
請進行檢查,確認執行個體上只有您的使用者目錄,而沒有安裝其他使用者目錄;且除了您的使用者目錄和憑證外,不存在其餘任何使用者的目錄和憑證。