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 trasferirla nel progetto pubblico dopo che il Partner Engineer di Google l'ha verificata.
Prima di iniziare
- Scarica Google Cloud SDK.
Crea la VM del prodotto di base
Per creare un'immagine macchina personalizzata per Cloud Marketplace, devi completa 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 usi processori Arm o un'immagine che usi x86 processori. In un prodotto VM puoi anche includere più immagini che hanno come target diversi tipi di macchine. Per ulteriori informazioni sulle piattaforme CPU e i tipi di macchina 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 maggiori informazioni informazioni sulla creazione di un'istanza, consulta Creazione e avvio di 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. Anche la creazione di un'immagine VM direttamente dalla tua VM trasferisce le directory utente e le chiavi SSH nel server per le VM, quindi devi pulisci il disco di input durante la creazione dell'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 e cancella i dati nella sezione Elimina il disco di avvio quando viene eliminata l'istanza. casella di controllo e fai clic su Salva. Utilizza il disco per creare l'immagine.
Elimina la VM conservando il disco. Ti viene chiesto di confermare l'eliminazione dei dati. Non selezionare Elimina anche il disco di avvio.
Successivamente, devi creare una nuova istanza VM. Espandi le opzioni Gestione, Disco, Networking e Chiavi SSH.
Sotto disco, collega il disco dell'istanza precedente come un disco 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 mantenendo invariata 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 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 tuo di sviluppo o di progetto pubblico. Ti consigliamo di iniziare con la creazione di una nel tuo progetto di sviluppo, per poi spostarla nel tuo pubblico solo dopo che il Partner Engineer di Google avrà verificato l'immagine.
Fai clic sul nome del prodotto.
Vai alla sezione Pacchetto di deployment. In Licenza VM, tieni presente che nome. Questo nome licenza verrà utilizzato nel passaggio successivo, quando crei la tua immagine.
Crea un'immagine con licenza eseguendo questo comando 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 la CPU le architetture che supporta, nel formato
who-vmOS-image-architecture-date
, sostituendoarchitecture
con unoArm
ox86_64
, a seconda dell'architettura della CPU utilizzata per l'immagine Google Cloud. Devi utilizzare un nome nuovo e univoco ogni volta che aggiorni l'immagine del prodotto.PUBLIC_PROJECT_NAME: l'ID del progetto pubblico per Cloud Marketplace. Devi aver ricevuto Amministratore Compute Storage (
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 per lo sviluppo e i test per 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 del dell'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, nel campo Aggiungi membri, inserisci
allAuthenticatedUsers
e dal menu Seleziona un ruolo, seleziona Utente immagine Compute.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, puoi includere automaticamente una password 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 di creazione delle credenziali di autorizzazione, vedi Creazione del 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 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 versione successiva:
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 non ci siano altre directory utente installate sul ad eccezione della tua e che non ci siano e credenziali diverse dalle tue.