Creare immagini personalizzate


Puoi creare immagini personalizzate da dischi di origine, immagini, snapshot o immagini archiviate in Cloud Storage e utilizzare queste immagini per creare istanze di macchine virtuali (VM). Le immagini personalizzate sono ideali per le situazioni in cui hai creato e modificato un disco di avvio permanente o un'immagine specifica in uno stato specifico e devi salvarlo per creare le VM.

In alternativa, puoi utilizzare lo strumento di importazione di dischi virtuali per importare immagini del disco di avvio in Compute Engine dai tuoi sistemi esistenti e aggiungerle all'elenco di immagini personalizzate.

Prima di iniziare

Creare un'immagine personalizzata

Questa sezione descrive come creare un'immagine personalizzata su una VM Linux. Per informazioni sulla creazione di un'immagine Windows, consulta la sezione Creazione di un'immagine Windows.

Seleziona una posizione di archiviazione delle immagini

Quando crei un'immagine personalizzata, puoi specificare la località Cloud Storage dell'immagine, escluse le località a doppia area geografica. Se specifichi la località di archiviazione delle immagini, puoi soddisfare i tuoi requisiti normativi e di conformità per la località dei dati, nonché le tue esigenze di alta disponibilità, garantendo la ridondanza in tutte le aree geografiche. Per creare, modificare ed eliminare le immagini archiviate in Cloud Storage, devi avere roles/compute.storageAdmin.

La funzione di geolocalizzazione è facoltativa. Se non selezioni una località, Compute Engine archivia l'immagine nella località a più aree geografiche più vicina all'origine dell'immagine. Ad esempio, quando crei un'immagine da un disco di origine che si trova in us-central1 e non specifichi una posizione per l'immagine personalizzata, Compute Engine archivia l'immagine nella multiregione us.

Se l'immagine non è disponibile in una regione in cui stai creando una VM, Compute Engine memorizza l'immagine in quella regione la prima volta che crei una VM.

Per vedere la posizione in cui viene archiviata un'immagine, utilizza il comando images describe di gcloud compute:

gcloud compute images describe IMAGE_NAME \
    --project=PROJECT_ID

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine.

  • PROJECT_ID: l'ID progetto a cui appartiene l'immagine.

Tutte le immagini esistenti prima del lancio di questa funzionalità rimangono dove si trovano. L'unica differenza è che puoi visualizzare la posizione delle immagini. Se hai un'immagine esistente che vuoi spostare, devi ricrearla nella posizione desiderata.

Prepara la tua VM per un'immagine

Puoi creare un'immagine da un disco anche mentre è collegata a una VM in esecuzione. Tuttavia, l'immagine è più affidabile se imposti la VM in uno stato più facile da acquisire. In questa sezione viene descritto come preparare il disco di avvio per l'immagine.

Riduci al minimo la scrittura dei dati sul disco permanente

Utilizza una delle seguenti procedure per ridurre le scritture del disco:

  • Arresta la VM in modo che possa arrestarsi e interrompere la scrittura di dati sul disco permanente.

  • Se non riesci ad arrestare la VM prima di creare l'immagine, riduci al minimo la quantità di scritture sul disco e sincronizza il file system. Per ridurre al minimo la scrittura sul disco permanente, segui questi passaggi:

    1. Metti in pausa app o processi del sistema operativo che scrivono i dati sul disco permanente.
    2. Se necessario, esegui uno svuotamento dell'app su disco. Ad esempio, MySQL ha un'istruzione FLUSH. Altre app potrebbero avere processi simili.
    3. Interrompi la scrittura delle app sul disco permanente.
    4. Esegui sudo sync.

Disattiva l'opzione di eliminazione automatica per il disco

Per impostazione predefinita, l'opzione di eliminazione automatica è abilitata sui dischi di avvio. Prima di creare un'immagine da un disco, disabilita l'eliminazione automatica per assicurarti che il disco non venga eliminato automaticamente quando elimini la VM.

Puoi utilizzare la console Google Cloud, Google Cloud CLI o l'API Compute Engine per disabilitare l'eliminazione automatica per il disco.

Console

  1. In Google Cloud Console, vai alla pagina Istanze VM.

    Vai alla pagina Istanze VM

  2. Fai clic sulla VM che stai utilizzando come origine per la creazione di un'immagine. Viene visualizzata la pagina Dettagli istanza VM.

  3. Fai clic su Modifica.

  4. Nella sezione Disco di avvio, per la Regola di eliminazione, assicurati che sia selezionata l'opzione Conserva disco.

  5. Fai clic su Salva.

gcloud

In Google Cloud CLI, usa il comando gcloud compute instances set-disk-auto-delete per disabilitare l'opzione di eliminazione automatica per il disco.

gcloud compute instances set-disk-auto-delete VM_NAME \
    --no-auto-delete \
    --disk=SOURCE_DISK

Sostituisci quanto segue:

  • VM_NAME: il nome dell'istanza VM.
  • SOURCE_DISK: il nome del disco da cui vuoi creare l'immagine.

API

Per impostare l'opzione di eliminazione automatica di un disco, effettua una richiesta POST al metodo instances.setDiskAutoDelete.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setDiskAutoDelete?autoDelete=false&deviceName=SOURCE_DISK

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto a cui appartiene la VM di origine.
  • ZONE: la zona in cui si trova la VM di origine.
  • VM_NAME: il nome della VM di origine.
  • SOURCE_DISK: nome del dispositivo del disco da cui vuoi creare l'immagine.

Dopo aver preparato la VM, crea l'immagine.

Crea l'immagine

Puoi creare immagini disco dalle seguenti origini:

  • Un disco permanente, anche se è collegato a una VM
  • Uno snapshot di un disco permanente
  • Un'altra immagine nel tuo progetto
  • Un'immagine condivisa da un altro progetto
  • Un'immagine RAW compressa in Cloud Storage

Puoi creare un'immagine disco una volta ogni 10 minuti. Se vuoi emettere una serie di richieste di creazione di un'immagine disco, puoi inviare al massimo 6 richieste in 60 minuti. Per ulteriori informazioni, consulta la pagina relativa ai limiti di frequenza per snapshot.

Console

  1. In Google Cloud Console, vai alla pagina Crea un'immagine.

    Vai a Creare un'immagine

  2. Specifica il nome dell'immagine.

  3. Specifica l'origine da cui vuoi creare un'immagine. Può essere un disco permanente, uno snapshot, un'altra immagine o un file disco.raw in Cloud Storage.

  4. Se stai creando un'immagine da un disco collegato a una VM in esecuzione, seleziona Mantieni in esecuzione l'istanza per confermare che vuoi creare l'immagine mentre la VM è in esecuzione. Puoi preparare la VM prima di creare l'immagine.

  5. Nell'elenco a discesa In base alla posizione del disco di origine (predefinita), specifica la posizione in cui archiviare l'immagine. Ad esempio, specifica us per archiviare l'immagine nell'area geografica us o us-central1 per archiviarla nell'area geografica us-central1. Se non effettui una selezione, Compute Engine archivia l'immagine nella località a più regioni più vicina alla posizione di origine dell'immagine.

  6. (Facoltativo) Specifica le proprietà dell'immagine.

    • Famiglia: la famiglia di immagini a cui appartiene questa nuova immagine.
    • Descrizione: una descrizione della tua immagine personalizzata.
    • Etichetta: un'etichetta per raggruppare insieme le risorse.
  7. Specifica la chiave di crittografia. Puoi scegliere tra una chiave gestita da Google, una chiave Cloud Key Management Service (Cloud KMS) o una chiave crittografia fornita dal cliente (CSEK). Se non viene specificata alcuna chiave di crittografia, le immagini vengono criptate utilizzando una chiave gestita da Google.

  8. Fai clic su Crea per creare l'immagine.

gcloud

Nell'interfaccia a riga di comando di Google Cloud, utilizza il comando gcloud compute images create per creare un'immagine personalizzata.

Crea un'immagine da un disco di origine:

Il flag --force è un flag facoltativo che ti consente di creare l'immagine da un'istanza in esecuzione. Per impostazione predefinita, non puoi creare immagini dalle istanze in esecuzione. Specifica questo flag solo se hai la certezza di voler creare l'immagine mentre l'istanza è in esecuzione.

gcloud compute images create IMAGE_NAME \
    --source-disk=SOURCE_DISK \
    --source-disk-zone=ZONE \
    [--family=IMAGE_FAMILY] \
    [--storage-location=LOCATION] \
    [--force]

Sostituisci quanto segue:

  • IMAGE_NAME: un nome per la nuova immagine
  • SOURCE_DISK: il disco da cui vuoi creare l'immagine
  • ZONE: la zona in cui si trova il disco
  • IMAGE_FAMILY: facoltativo: un flag che specifica a quale famiglia di immagini appartiene questa immagine
  • LOCATION: facoltativo: un flag che ti consente di indicare l'area geografica o le aree geografiche multiple in cui è archiviata l'immagine. Ad esempio, specifica us per archiviare l'immagine nella località a più aree geografiche us o us-central1 per archiviarla nell'area geografica us-central1. Se non effettui una selezione, Compute Engine archivia l'immagine nella località a più aree geografiche più vicina alla posizione di origine dell'immagine.

Per creare un'immagine da un'immagine di origine:

gcloud compute images create IMAGE_NAME \
  --source-image=SOURCE_IMAGE \
  [--source-image-project=IMAGE_PROJECT] \
  [--family=IMAGE_FAMILY] \
  [--storage-location=LOCATION]

Sostituisci quanto segue:

  • IMAGE_NAME: un nome per la nuova immagine.
  • SOURCE_IMAGE: l'immagine da cui vuoi creare la nuova immagine.
  • IMAGE_PROJECT: facoltativo: il progetto in cui si trova l'immagine di origine. Utilizza questo parametro se vuoi copiare un'immagine da un altro progetto.
  • IMAGE_FAMILY: facoltativa: la famiglia di immagini a cui appartiene questa nuova immagine.
  • LOCATION: (facoltativo) consente di specificare la regione o le regioni a cui è archiviata l'immagine. Ad esempio, specifica us per archiviare l'immagine nell'area geografica us o us-central1 per archiviarla nell'area geografica us-central1. Se non effettui una selezione, Compute Engine archivia l'immagine nella località a più regioni più vicina alla posizione di origine della tua immagine.

Crea un'immagine da uno snapshot:

gcloud compute images create IMAGE_NAME \
    --source-snapshot=SOURCE_SNAPSHOT \
    [--storage-location=LOCATION]

Sostituisci quanto segue:

  • IMAGE_NAME: un nome per la nuova immagine
  • SOURCE_SNAPSHOT: lo snapshot da cui vuoi creare l'immagine
  • LOCATION: facoltativo: un flag che ti consente di indicare l'area geografica o le aree geografiche multiple in cui è archiviata l'immagine. Ad esempio, specifica us per archiviare l'immagine nella località a più aree geografiche us o us-central1 per archiviarla nell'area geografica us-central1. Se non effettui una selezione, Compute Engine archivia l'immagine nella località a più aree geografiche più vicina alla posizione di origine dell'immagine.

Per visualizzare la posizione di un'immagine:

Utilizza il comando gcloud compute images describe per visualizzare una posizione dell'immagine.

gcloud compute images describe IMAGE_NAME

Sostituisci IMAGE_NAME con il nome dell'immagine che vuoi esaminare.

API

Esegui una richiesta POST per il metodo images().insert, un URL nel corpo della richiesta che punti all'oggetto di origine da cui vuoi creare l'immagine. Specifica gli URL delle risorse utilizzando il tuo ID progetto e i nomi delle risorse.

Crea un'immagine da un disco permanente:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images

{
  "name": "IMAGE_NAME",
  "sourceDisk": "/zones/ZONE/disks/SOURCE_DISK",
  ("storageLocations": "LOCATION",)
  ("forceCreate": "TRUE")
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto a cui appartiene l'immagine.
  • IMAGE_NAME: un nome per la nuova immagine che vuoi creare.
  • ZONE: la zona in cui si trova il disco di origine.
  • SOURCE_DISK: il disco da cui vuoi creare l'immagine.
  • LOCATION: facoltativa: la posizione di archiviazione della tua immagine. Ad esempio, specifica us per archiviare l'immagine nella località con più regioni us oppure us-central1 per archiviarla nell'area geografica us-central1. Se non effettui una selezione, Compute Engine archivia l'immagine nella località a più regioni più vicina alla posizione di origine della tua immagine.

Il parametro facoltativo forceCreate consente di creare l'immagine da una VM in esecuzione. Specifica TRUE solo se hai la certezza di voler creare l'immagine da una VM in esecuzione. L'impostazione predefinita forceCreate è FALSE.

Per creare un'immagine da un'altra immagine:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images

{
  "name": "IMAGE_NAME",
  "sourceImage": "/global/images/SOURCE_IMAGE",
  ("storageLocations": "LOCATION")
}

Sostituisci quanto segue:

  • PROJECT_ID: il progetto a cui appartiene l'immagine.
  • IMAGE_NAME: un nome per la nuova immagine che vuoi creare.
  • SOURCE_IMAGE: l'immagine da cui vuoi creare l'immagine.
  • LOCATION: facoltativa: la posizione di archiviazione della tua immagine. Ad esempio, specifica us per archiviare l'immagine nella località con più regioni us oppure us-central1 per archiviarla nell'area geografica us-central1. Se non effettui una selezione, Compute Engine archivia l'immagine nella multiregione più vicina alla posizione di origine della tua immagine.

Crea un'immagine da uno snapshot:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images
{
  "name": "IMAGE_NAME",
  "sourceSnapshot": "(/SOURCE_PROJECT_ID)/global/snapshots/SOURCE_SNAPSHOT",
  ("storageLocations": "LOCATION")
}

Sostituisci quanto segue:

  • PROJECT_ID: il progetto a cui appartiene l'immagine.
  • IMAGE_NAME: un nome per la nuova immagine che vuoi creare.
  • SOURCE_PROJECT_ID: facoltativo: il progetto in cui si trova lo snapshot. Devi avere l'autorizzazione per accedere alla risorsa snapshot in quel progetto.
  • SOURCE_SNAPSHOT: l'istantanea da cui vuoi creare l'immagine.
  • LOCATION: facoltativa: la posizione di archiviazione della tua immagine. Ad esempio, specifica us per archiviare l'immagine nella località con più regioni us oppure us-central1 per archiviarla nell'area geografica us-central1. Se non effettui una selezione, Compute Engine archivia l'immagine nella località a più regioni più vicina alla posizione di origine della tua immagine.

Per scoprire di più sull'aggiunta di immagini, consulta il riferimento per le immagini.

Condividi l'immagine

Dopo aver creato un'immagine personalizzata, puoi condividerla tra progetti. Se consenti agli utenti di un altro progetto di utilizzare le tue immagini personalizzate, possono accedere a queste immagini specificando il progetto immagine nella loro richiesta.

Abilita le funzionalità del sistema operativo guest sulle immagini personalizzate

Utilizza le funzionalità del sistema operativo guest (OS) per configurare le seguenti opzioni di networking, sicurezza, archiviazione e sistema operativo su immagini personalizzate. Le immagini personalizzate con queste funzionalità configurate vengono utilizzate come dischi di avvio.

gcloud

Utilizza il comando gcloud compute images create con il flag --guest-os-features per creare una nuova immagine personalizzata da un'immagine personalizzata esistente.

gcloud compute images create IMAGE_NAME \
    --source-image=SOURCE_IMAGE \
    [--source-image-project=IMAGE_PROJECT] \
    --guest-os-features="FEATURES,..." \
    [--storage-location=LOCATION]

Sostituisci quanto segue:

  • IMAGE_NAME: il nome della nuova immagine.
  • SOURCE_IMAGE: un'immagine su cui basare la nuova immagine.
  • IMAGE_PROJECT: facoltativo: il progetto contenente l'immagine di origine

    Utilizza questo parametro per copiare un'immagine da un altro progetto.

  • FEATURES: tag del sistema operativo guest per abilitare le funzionalità per le VM che crei dalle immagini

    Per aggiungere più valori, utilizza le virgole per separare i valori. Imposta uno o più dei seguenti valori:

  • LOCATION: (facoltativo) regione o multiregione in cui archiviare l'immagine

    Ad esempio, specifica us per archiviare l'immagine nell'area geografica us o us-central1 per archiviarla nell'area geografica us-central1. Se non effettui una selezione, Compute Engine archivia l'immagine nella località a più regioni più vicina alla posizione di origine dell'immagine.

API

Usa il metodo images().insert con il flag guestOsFeatures per creare una nuova immagine personalizzata da un'immagine personalizzata esistente.


POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images

{
 "name": "IMAGE_NAME",
 "sourceImage": "(projects/IMAGE_PROJECT)/global/images/SOURCE_IMAGE",
 ("storageLocations": "LOCATION",)
 "guestOsFeatures": [
  {
   "type": "FEATURES"
  }
 ]
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui creare la nuova immagine
  • IMAGE_NAME: un nome per la nuova immagine
  • IMAGE_PROJECT: facoltativo: il progetto contenente l'immagine di origine

    Utilizza questo parametro per copiare un'immagine da un altro progetto.

  • SOURCE_IMAGE: l'immagine su cui basare la nuova immagine.

  • LOCATION: (facoltativo) una o più regioni in cui archiviare l'immagine

    Ad esempio, specifica us per archiviare l'immagine nella località con più regioni us oppure us-central1 per archiviarla nell'area geografica us-central1. Se non effettui una selezione, Compute Engine archivia l'immagine nella località a più regioni più vicina alla posizione di origine della tua immagine.

  • FEATURES: tag del sistema operativo guest per abilitare le funzionalità per le VM che crei dalle immagini

    Per aggiungere più valori, utilizza le virgole per separare i valori. Imposta uno o più dei seguenti valori:

Considerazioni per le immagini di leva

Google offre la serie di macchine Tau T2A, che viene eseguita sulla piattaforma CPU Ampere Altra. Puoi avviare una VM con la serie di macchine T2A, quindi utilizzare la VM di origine per creare un'immagine Arm. La procedura di creazione di un'immagine personalizzata per il braccio è identica a quella per la creazione di un'immagine x86.

Per aiutare gli utenti a distinguere tra immagini Arm e x86, un campo architecture verrà impostato su ARM64. I valori possibili per questo campo sono:

  • ARCHITECTURE_UNSPECIFIED
  • X86_64
  • ARM64

Gli utenti possono quindi filtrare questo campo per trovare immagini x86 o basate su armi.

Passaggi successivi