Immagine per la creazione della tua macchina virtuale (VM)

Questa pagina consente di creare un'immagine macchina pubblica per il tuo prodotto da eseguire su Compute Engine.

Un'immagine contiene un bootloader, un sistema operativo e un file system radice necessario 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 macchina virtuale (VM) nel cloud.

Ti consigliamo di iniziare creando un'immagine nel progetto di sviluppo, per poi spostarla nel progetto pubblico dopo che il tuo Partner Engineer di Google ha verificato l'immagine.

Prima di iniziare

  1. Scarica Google Cloud SDK.

Crea la VM del prodotto base

Per creare un'immagine macchina personalizzata per Cloud Marketplace, devi completare questi passaggi (descritti nelle sezioni seguenti):

  • Utilizza una delle immagini pubbliche di base supportate da Google per creare una VM e installare configurazioni e pacchetti specifici dell'app.

    Puoi scegliere un'immagine che utilizza processori ARM o un'immagine che utilizza processori x86. Puoi anche includere più immagini, indirizzate a tipi di macchina diversi, in un unico prodotto VM. Per ulteriori informazioni sulle piattaforme CPU e sui tipi di macchine che le supportano, consulta Piattaforme CPU.

  • Se intendi fornire assistenza ai tuoi clienti, installa gli script per recuperare le credenziali utente dell'app.

Crea un'immagine VM con licenza

  1. Utilizza gcloud per configurare 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 seguito, convertita in un'immagine da utilizzare su Cloud Marketplace. Per ulteriori 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 tuo software. Includi eventuali script di avvio richiesti, ad esempio quelli per creare le credenziali di autorizzazione.

    Per creare credenziali di autorizzazione utilizzando password casuali sicure, segui la procedura descritta in Creazione di 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, perciò 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 di cui vuoi eseguire la pulizia, quindi su Modifica.

    2. Scorri verso il basso e deseleziona la casella di controllo Elimina il disco di avvio quando viene eliminata l'istanza, quindi fai clic su Salva. Devi usare il disco per creare l'immagine.

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

    4. Il passaggio successivo consiste nel 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 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 il processo di installazione del software. Devi montare il disco dati per potervi accedere. Per ulteriori informazioni sul montaggio dei dischi, consulta Aggiunta o ridimensionamento di dischi permanenti.

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

  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 progetto di sviluppo o pubblico. Ti consigliamo di iniziare creando un'immagine nel progetto di sviluppo, per poi spostarla nel progetto pubblico dopo che il tuo Partner Engineer di Google ha verificato l'immagine.

    2. Fai clic sul nome del prodotto.

    3. Vai alla sezione Pacchetto di deployment. Prendi nota del nome in Licenza VM. Utilizza questo nome di licenza nel passaggio successivo, quando crei l'immagine.

  6. Crea un'immagine concessa in 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 della CPU supportate nel formato who-vmOS-image-architecture-date, sostituendo architecture con Arm 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 progetto pubblico per Cloud Marketplace. Devi disporre del ruolo Amministratore Compute Storage (roles/compute.storageAdmin) per questo progetto.

    • LICENSE_NAME: il nome della licenza per il tuo prodotto VM indicato nel passaggio precedente.

    • DEV_PROJECT_NAME: l'ID del progetto che hai creato per lo sviluppo e i test per Cloud Marketplace. Devi avere il ruolo Utente immagine 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 l'immagine disponibile pubblicamente 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 progetto pubblico, in Compute Engine, vai alla pagina Immagini.

    Vai alla pagina Immagini

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

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

  4. Nel riquadro delle informazioni, inserisci allAuthenticatedUsers nel campo Aggiungi membri e, nel 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 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 casuale sicura quando configuri direttamente il tuo pacchetto di deployment.

Se prevedi di creare il tuo 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, consulta Creazione del pacchetto di deployment.

Dopo il deployment del prodotto, per ottenere i valori delle password che hai creato, utilizza il seguente comando dall'istanza della 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, accedi all'istanza tramite SSH e verifica che siano allegate 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
gsutil --version
ssh -V
ps aux | grep sshd
curl -V
ps aux | grep dhcp

Verifica che nell'istanza non siano installate altre directory utente tranne la tua e che non ci siano altre directory utente e credenziali diverse dalle tue.