Questa pagina ti aiuta a creare un'immagine macchina pubblica per l'esecuzione del tuo prodotto su Compute Engine.
Un'immagine contiene un bootloader, un sistema operativo e un file system principale necessari per avviare un'istanza. Puoi configurare l'immagine con un insieme di app e servizi per il tuo prodotto. L'immagine viene utilizzata dai clienti per avviare un'istanza di una macchina virtuale (VM) nel cloud.
Ti consigliamo di iniziare creando un'immagine nel progetto di sviluppo, quindi di spostarla nel progetto pubblico dopo che il Partner Engineer di Google ha verificato l'immagine.
Prima di iniziare
- Scarica l'SDK Google Cloud.
Crea la VM del prodotto di base
Per creare un'immagine macchina personalizzata per Cloud Marketplace, devi completare i seguenti passaggi (descritti nelle sezioni seguenti):
Utilizza una delle immagini pubbliche di base supportate di Google per creare una VM e installare i pacchetti e le configurazioni specifici dell'app.
Puoi scegliere un'immagine che utilizzi processori Arm o x86. In un prodotto VM puoi anche includere più immagini che hanno come target diversi tipi di macchine. Per saperne di più sulle piattaforme CPU e sui tipi di macchine che le supportano, consulta Piattaforme CPU.
Se intendi fornire assistenza ai tuoi clienti, installa script per recuperare le credenziali utente dell'app.
Crea un'immagine VM con licenza
Utilizza gcloud per impostare i valori predefiniti per Google Cloud CLI:
gcloud config set project <project_id> gcloud config set compute/zone <zone>
Crea un'istanza principale utilizzata per installare il software e, in un secondo momento, trasformata in un'immagine da utilizzare su Cloud Marketplace. Per ulteriori informazioni sulla creazione di un'istanza, consulta la sezione Creare e avviare un'istanza.
gcloud compute instances create ${INSTANCE} --scopes https://www.googleapis.com/auth/cloud-platform
Installa e personalizza il software. Includi gli script di avvio richiesti, come quelli per la creazione delle credenziali di autorizzazione.
Per creare credenziali di autorizzazione utilizzando password casuali sicure, segui i passaggi descritti in Creare credenziali di autorizzazione nella sezione seguente.
Dopo aver creato e personalizzato l'istanza principale, prepara il disco necessario per creare un'immagine VM.
Libera spazio sul disco. La creazione di un'immagine VM direttamente dalla VM trasferisce anche le directory utente e le chiavi SSH nelle VM dei clienti, pertanto devi pulire il disco di input quando crei l'immagine VM.
Per pulire il disco:
Nel menu Istanze VM di Compute Engine, fai clic sul nome dell'istanza che vuoi eliminare e poi su Modifica.
Scorri verso il basso, deseleziona la casella di controllo Elimina il disco di avvio quando viene eliminata l'istanza e fai clic su Salva. Utilizza il disco per creare l'immagine.
Elimina la VM mantenendo il disco. Ti viene chiesto di confermare l'eliminazione. Non selezionare Elimina anche il disco di avvio.
Successivamente, devi creare una nuova istanza VM. Espandi le opzioni Gestione, Disco, Networking e Chiavi SSH.
In disk, collega il disco dell'istanza precedente come disco di dati aggiuntivo. Assicurati che l'opzione Conserva disco sia selezionata per Quando si elimina un'istanza.
Ora puoi connetterti all'istanza tramite SSH e rimuovere eventuali home directory o altri file temporanei creati durante la procedura di installazione del software. Devi montare il disco di dati prima di potervi accedere. Per ulteriori informazioni sul montaggio dei dischi, consulta Aggiunta o ridimensionamento dei dischi permanenti.
Al termine, arresta ed elimina l'istanza conservando il disco dati aggiornato. Ora puoi creare un'immagine VM completando i seguenti passaggi.
Per ottenere il nome della licenza per il tuo prodotto VM in Producer Portal, segui questi passaggi:
Apri il Producer Portal nella console Google Cloud:
https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
Sostituisci YOUR_PROJECT_ID con l'ID del progetto di sviluppo o pubblico. Ti consigliamo di iniziare creando un'immagine nel progetto di sviluppo, per poi spostarla nel progetto pubblico dopo la verifica dell'immagine da parte dell'ingegnere partner di Google.
Fai clic sul nome del prodotto.
Vai alla sezione Pacchetto di deployment. In Licenza VM, prendi nota del nome. Utilizza questo nome della licenza nel passaggio successivo, quando crei la tua immagine.
Crea un'immagine con licenza eseguendo il seguente comando
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
Sostituisci quanto segue:
CREATE_IMAGE_NAME: il nome dell'immagine e le architetture CPU supportate, nel formato
who-vmOS-image-architecture-date
, sostituendoarchitecture
conArm
ox86_64
, a seconda dell'architettura CPU supportata dall'immagine. Devi utilizzare un nome nuovo e univoco ogni volta che aggiorni l'immagine del prodotto.PUBLIC_PROJECT_NAME: l'ID del tuo progetto pubblico per Cloud Marketplace. Devi disporre del ruolo Amministratore archiviazione Compute (
roles/compute.storageAdmin
) per questo progetto.LICENSE_NAME: il nome della licenza del prodotto VM che hai annotato nel passaggio precedente.
DEV_PROJECT_NAME: l'ID del progetto che hai creato per lo sviluppo e i test di Cloud Marketplace. Devi avere il ruolo Utente immagine di Compute (
roles/compute.imageUser
) per questo progetto.SOURCE_DISK_ZONE: la zona del disco di origine.
SOURCE_DISK_NAME: il nome del disco di origine.
ADD_DESCRIPTION: una descrizione testuale facoltativa per l'immagine in fase di creazione.
Rendi pubblica l'immagine
Per i prodotti non Terraform che non utilizzano immagini di proprietà di Marketplace, devi rendere disponibile pubblicamente l'immagine in modo che i clienti possano eseguirne il deployment nelle loro istanze Compute Engine. Per rendere pubblica l'immagine, utilizza la console Google Cloud o Google Cloud CLI:
Console
Nel tuo progetto pubblico, vai alla pagina Immagini in Compute Engine.
Seleziona l'immagine, come mostrato di seguito:
Se non vedi un riquadro informativo in alto a destra, fai clic su Mostra riquadro informazioni.
Nel riquadro delle informazioni, inserisci
allAuthenticatedUsers
nel campo Aggiungi membri e seleziona Utente immagine di calcolo nel menu Seleziona un ruolo.Fai clic su Aggiungi per rendere pubblica l'immagine.
Riga di comando
Utilizza il seguente comando gcloud
in
Cloud Shell o sulla tua macchina
locale:
gcloud compute images add-iam-policy-binding IMAGE_NAME --member=allAuthenticatedUsers --role=roles/compute.imageUser
Crea le credenziali di autorizzazione
Se il tuo prodotto è un semplice deployment di una singola istanza VM con regole firewall di base, puoi includere automaticamente una password sicura randomizzata quando configuri direttamente il pacchetto di deployment.
Se prevedi di creare il pacchetto di deployment utilizzando lo
strumento open source mpdev
,
che consigliamo per la maggior parte dei casi d'uso, puoi utilizzare mpdev
per includere automaticamente
più password casuali sicure.
Per la procedura per creare le credenziali di autorizzazione, consulta Creare il pacchetto di deployment.
Dopo aver eseguito il deployment del prodotto, per ottenere i valori di eventuali password che hai creato, utilizza il seguente comando dall'interno dell'istanza VM:
curl -H "Metadata-Flavor: Google" \ http://metadata/computeMetadata/v1/instance/attributes/PASSWORD_NAME
Testa l'immagine VM
Crea un'istanza VM con l'immagine appena creata e verifica la funzionalità.
Inoltre, per verificare l'ID licenza, esegui SSH nell'istanza e verifica che siano collegate licenze valide:
curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/licenses/?recursive=true
Verifica che sia installato Python 2.6 o versioni successive:
python -V
Verifica che siano installati i seguenti pacchetti:
gcloud --version ssh -V ps aux | grep sshd curl -V ps aux | grep dhcp
Verifica che nell'istanza non siano installate altre directory utente oltre alla tua e che non siano presenti altre credenziali e directory utente oltre alle tue.