Creazione dell'immagine della macchina virtuale (VM)

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

  1. 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

  1. Utilizza gcloud per impostare i valori predefiniti per Google Cloud CLI:

    gcloud config set project <project_id>
    gcloud config set compute/zone <zone>
  2. 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 
  3. 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.

  4. 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:

    1. Nel menu Istanze VM di Compute Engine, fai clic sul nome dell'istanza che vuoi eliminare e poi su Modifica.

    2. 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.

    3. Elimina la VM mantenendo il disco. Ti viene chiesto di confermare l'eliminazione. Non selezionare Elimina anche il disco di avvio.

    4. Successivamente, devi creare una nuova istanza VM. Espandi le opzioni Gestione, Disco, Networking e Chiavi SSH.

    5. 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.

    6. Al termine, arresta ed elimina l'istanza conservando il disco dati aggiornato. Ora puoi creare un'immagine VM completando i seguenti passaggi.

  5. Per ottenere il nome della licenza per il tuo prodotto VM in Producer Portal, segui questi passaggi:

    1. 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.

    2. Fai clic sul nome del prodotto.

    3. 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.

  6. 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 formatowho-vmOS-image-architecture-date, sostituendo architecture conArm o x86_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

  1. Nel tuo progetto pubblico, vai alla pagina Immagini in Compute Engine.

    Vai alla pagina Immagini

  2. Seleziona l'immagine, come mostrato di seguito:

  3. Se non vedi un riquadro informativo in alto a destra, fai clic su Mostra riquadro informazioni.

  4. Nel riquadro delle informazioni, inserisci allAuthenticatedUsers nel campo Aggiungi membri e seleziona Utente immagine di calcolo nel menu Seleziona un ruolo.

  5. 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.