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 trasferirla nel progetto pubblico dopo che il Partner Engineer di Google l'ha verificata.

Prima di iniziare

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

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

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

    3. Elimina la VM conservando il disco. Ti viene chiesto di confermare l'eliminazione dei dati. 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. 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.

    6. Al termine, arresta ed elimina l'istanza mantenendo invariata 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 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.

    2. Fai clic sul nome del prodotto.

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

  6. 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, sostituendo architecture con uno Arm o x86_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

  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, nel campo Aggiungi membri, inserisci allAuthenticatedUsers e dal menu Seleziona un ruolo, seleziona Utente immagine Compute.

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