Dopo aver creato un'immagine macchina, puoi utilizzarla per creare copie dell'istanza di calcolo di origine. Per saperne di più sugli utilizzi delle immagini macchina, consulta quando utilizzare un'immagine macchina.
Un'immagine macchina contiene la maggior parte delle informazioni e dei dati necessari per clonare un'istanza.
Un'immagine della macchina non è modificabile. Tuttavia, puoi sostituire quasi tutte le proprietà dell'immagine della macchina quando crei un'istanza dall'immagine della macchina.
Puoi creare istanze dalle immagini macchina utilizzando la console Google Cloud, la CLI Google Cloud o REST.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API. Google Cloud
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Puoi creare al massimo 6 istanze da un'immagine macchina di origine in 60 minuti. Se superi questo limite, l'operazione di creazione dell'istanza non va a buon fine e restituisce un messaggio di errore simile al seguente:
Operation rate exceeded for resource 'projects/test/global/machineImages/machine-image-1'. Too frequent operations from the source resource.
Per creare più istanze rispetto al limite definito (6 istanze in 60 minuti), crea immagini macchina aggiuntive dall'istanza di origine o crea immagini macchina di breve durata dalle nuove istanze. Puoi quindi creare il numero richiesto di istanze dalle nuove immagini macchina.
Non puoi creare istanze da immagini macchina con dischi regionali collegati utilizzando la console Google Cloud. Utilizza Google Cloud CLI o REST e specifica i parametri
replicaZones
edeviceName
per ogni disco regionale collegato. Per ulteriori informazioni, consulta Creare un'istanza da un'immagine macchina con sostituzioni delle proprietà.Nella console Google Cloud, vai alla pagina Crea un'istanza.
Nel menu
Crea VM da…, seleziona Immagini macchina.Nella finestra Crea VM da immagine macchina visualizzata, procedi nel seguente modo:
Seleziona un'immagine della macchina.
Per creare e avviare l'istanza, fai clic su Crea.
INSTANCE_NAME
: il nome dell'istanzaZONE
: la zona per l'istanzaSOURCE_MACHINE_IMAGE_NAME
: l'immagine della macchina da cui creare l'istanzaPROJECT_ID
: il tuo ID progetto.ZONE
: la zona dell'istanza.INSTANCE_NAME
: un nome per l'istanza.SOURCE_MACHINE_IMAGE_URL
: l'URL completo o parziale dell'immagine macchina che vuoi utilizzare per creare l'istanza. Ad esempio, se hai un'immagine macchina denominatamy-machine-image
in un progetto denominatomyProject
. I seguenti URL sono validi:https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
- Non puoi sostituire le proprietà del disco collegato, ad eccezione del nome, durante la creazione di un'istanza dall'immagine macchina.
Devi specificare il parametro
replicaZones
per ogni disco regionale collegato, insieme aldeviceName
del disco regionale dall'immagine della macchina.Se l'istanza di origine (utilizzata per generare l'immagine macchina) e la nuova istanza appartengono allo stesso progetto e alla stessa regione, si applica quanto segue:
- La maggior parte delle proprietà dell'istanza di origine e della nuova istanza sono uguali. Le proprietà che differiscono sono quelle come gli indirizzi IP temporanei assegnati automaticamente.
- Se l'istanza di origine esiste ancora quando crei una nuova istanza, la nuova istanza non può utilizzare lo stesso nome e la stessa zona dell'istanza di origine.
Se l'istanza di origine utilizzata per generare l'immagine macchina e la nuova istanza appartengono allo stesso progetto, ma a regioni diverse, si applica quanto segue:
- Devi sostituire tutte le risorse a livello di zona e regione per la nuova istanza. Ad esempio, se crei un'istanza da un'immagine macchina la cui istanza di origine apparteneva a una regione diversa, devi eseguire l'override delle risorse regionali come la subnet e le regole del firewall regionale. Tuttavia, le risorse globali come i bilanciatori del carico e gli account di servizio non richiedono un superamento, a meno che tu non voglia modificarli.
Nella console Google Cloud, vai alla pagina Crea un'istanza.
Nel menu
Crea VM da…, seleziona Immagini macchina.Nella finestra Crea VM da immagine macchina visualizzata, seleziona un modello e poi fai clic su
Personalizza.(Facoltativo) Specifica altre opzioni di configurazione. Per ulteriori informazioni, consulta Opzioni di configurazione durante la creazione dell'istanza.
Per creare e avviare l'istanza, fai clic su Crea.
PROJECT_ID
: l'ID progetto.ZONE
: la zona dell'istanza.INSTANCE_NAME
: un nome per l'istanza.NEW_MACHINE_TYPE
: il tipo di macchina che vuoi utilizzare per l'istanza.SOURCE_MACHINE_IMAGE_URL
: l'URL completo o parziale dell'immagine macchina che vuoi utilizzare per creare l'istanza. Ad esempio, se hai un'immagine macchina denominatamy-machine-image
in un progetto denominatomyProject
. I seguenti URL sono validi:https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
- Se sostituisci un campo di base, il campo di base corrispondente
nella macchina virtuale viene sostituito con il valore del campo di base
nella richiesta. I campi di base includono parametri come
machineType
ename
. - Se sostituisci un campo ripetuto, tutti i valori ripetuti per quella proprietà vengono sostituiti con i valori corrispondenti forniti nella richiesta.
I campi ripetuti sono in genere proprietà di tipo
list
. Ad esempio,disks
enetworkInterfaces
sono campi ripetuti. - Se sostituisci un
nested object
, l'oggetto nell'immagine macchina viene unito alla specifica dell'oggetto corrispondente nella richiesta. Tieni presente che se un oggetto nidificato si trova all'interno di un campo ripetuto, il campo viene trattato in base alle regole per i campi ripetuti. Le etichette sono un'eccezione a questa regola e vengono trattate come un campo ripetuto anche se sono di tipoobject
. Concedi l'accesso all'immagine macchina archiviata in un altro progetto.
Le autorizzazioni possono essere concesse al progetto di origine o all'immagine della macchina. Utilizza il comando
gcloud compute machine-images add-iam-policy-binding
per concedere le autorizzazioni all'immagine macchina.gcloud compute machine-images add-iam-policy-binding MACHINE_IMAGE_NAME \ --project=MACHINE_IMAGE_PROJECT \ --member='ACCOUNT_EMAIL' \ --role='roles/compute.admin'
Sostituisci quanto segue:
MACHINE_IMAGE_PROJECT
: l'ID progetto per il progetto che contiene l'immagine della macchina di origine.MACHINE_IMAGE_NAME
: il nome dell'immagine macchina a cui vuoi aggiungere l'associazione delle autorizzazioni.ACCOUNT_EMAIL
: l'indirizzo email delserviceAccount
o deluser
che sta creando l'istanza. Assicurati che l'email sia formattata in modo da includere il prefisso richiesto. Il prefisso deve essere uno dei seguenti:user:
specifica questo valore se l'indirizzo email è associato a un account dell'utente. Ad esempio,user:user@example.com
.serviceAccount:
specifica questo valore se l'indirizzo email è associato a un account di servizio. Ad esempio,serviceAccount:123456789000-compute@developer.gserviceaccount.com
.
Esempio
Ad esempio, per aggiungere un'associazione
compute.admin
all'immagine macchina denominatamy-machine-image
all'indirizzo email dell'account di servizio123456789000-compute@developer.gserviceaccount.com
, utilizza il seguente comandogcloud CLI
:gcloud compute machine-images add-iam-policy-binding my-machine-image \ --project=machine-image-project \ --member='serviceAccount:123456789000-compute@developer.gserviceaccount.com' \ --role='roles/compute.admin'
Concedi all'utente che esegue il comando
gcloud compute instances create
il ruolo Utente account di servizio (roles/iam.serviceAccountUser
) nell'account di servizio associato all'immagine della macchina.Utilizza il comando
gcloud compute instances create
per creare un'istanza da un'immagine macchina.gcloud compute instances create INSTANCE_NAME \ --project=INSTANCE_PROJECT_ID \ --zone=ZONE \ --source-machine-image=projects/MACHINE_IMAGE_PROJECT/global/machineImages/MACHINE_IMAGE_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --subnet=SUBNET
Sostituisci quanto segue:
INSTANCE_PROJECT_ID
: l'ID progetto in cui vuoi creare l'istanzaINSTANCE_NAME
: un nome per l'istanzaZONE
: la zona per l'istanzaMACHINE_IMAGE_PROJECT
: l'ID progetto in cui si trova l'immagine macchinaMACHINE_IMAGE_NAME
: l'immagine della macchina da cui creare l'istanzaSERVICE_ACCOUNT_EMAIL
: l'indirizzo email dell'account servizio che vuoi collegare all'istanzaSUBNET
: se la subnet e l'istanza si trovano nello stesso progetto, sostituisci SUBNET con il nome di una subnet che si trova nella stessa regione dell'istanzaPer specificare una subnet in una rete VPC condivisa, sostituisci
SUBNET
con una stringa nel seguente formato:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
Sostituisci quanto segue:
HOST_PROJECT_ID
: l'ID progetto del progetto host VPC condivisoREGION
: la regione della subnetSUBNET_NAME
: il nome della subnet
Esempio
Ad esempio, il seguente comando crea una VM denominata
my-instance
invm-project
, nella zonaus-east1-b
, da un'immagine macchina denominatamy-machine-image
.Il flag
--service-account
specifica l'account di servizio da collegare alla VM appena creata. Se non fornisci questo flag, l'account di servizio di origine non può essere condiviso tra i due progetti e l'operazione non va a buon fine.gcloud compute instances create my-instance \ --project=vm-project \ --zone=us-east1-b \ --source-machine-image=projects/machine-image-project/global/machineImages/my-machine-image \ --service-account=000123456789-compute@developer.gserviceaccount.com
Dopo la creazione della VM, l'output è simile al seguente:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
- Scopri di più sulle immagini macchina
- Scopri di più sulla creazione di istanze Compute Engine
REST
Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Per ulteriori informazioni, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione Google Cloud sull'autenticazione.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare istanze Compute Engine dalle immagini macchina, chiedi all'amministratore di concederti il ruolo IAM Amministratore istanze Compute (v1) (
roles/compute.instanceAdmin.v1
) nell'istanza o nel progetto Compute Engine. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Limitazioni
Quando crei istanze da immagini macchina, si applicano le seguenti limitazioni:
Crea un'istanza da un'immagine macchina (senza override)
Utilizza questo metodo se vuoi creare un'istanza completamente basata sull'immagine macchina senza modifiche alle proprietà.
Console
gcloud
Utilizza il comando
gcloud compute instances create
per creare un'istanza da un'immagine macchina.gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --source-machine-image=SOURCE_MACHINE_IMAGE_NAME
Sostituisci quanto segue:
Esempio
Ad esempio, puoi utilizzare il seguente comando
gcloud
per creare un'istanza denominatamy-instance
nella zonaus-east1-b
da un'immagine macchina denominatamy-machine-image
.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image
Dopo la creazione dell'istanza, l'output è simile al seguente:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
REST
Nell'API, crea una richiesta
POST
al metodoinstances.insert
. Nel corpo della richiesta, includi i seguenti parametri:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Sostituisci quanto segue:
Creare un'istanza da un'immagine macchina con sostituzioni delle proprietà
Se vuoi creare un'istanza principalmente in base all'immagine macchina, ma con alcune modifiche, puoi utilizzare il comportamento di override. Per utilizzare il comportamento di override, devi passare gli attributi per eseguire l'override delle proprietà dell'immagine macchina esistenti al momento della creazione dell'istanza.
Quando utilizzi la funzionalità di override, tieni presenti le seguenti note:
Console
gcloud
Utilizza il comando
gcloud compute instances create
per creare un'istanza da un'immagine macchina e aggiungi le proprietà che vuoi sostituire.Ad esempio, puoi utilizzare il seguente comando
gcloud
per creare una VM chiamatamy-instance
nella zonaus-east1-b
da un'immagine macchina chiamatamy-machine-image
. In questo esempio, le sostituzioni vengono applicate per modificare il tipo di macchina, interrompere il criterio di manutenzione dell'host e configurare un disco regionale permanente con il nomeregional-disk-0
.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image \ --machine-type=e2-standard-2 \ --maintenance-policy=TERMINATE \ --create-disk=device-name=boot-device-0,boot=true,auto-delete=true \ --create-disk=device-name=regional-disk-0,\ replica-zones=^:^us-east1-b:us-east1-c,boot=false
REST
Per sostituire le proprietà dell'immagine macchina durante la creazione dell'istanza, costruisci una richiesta
POST
al metodoinstances.insert
. Nel corpo della richiesta, includi il parametrosourceMachineImage
e tutte le sostituzioni necessarie. Puoi aggiungere qualsiasi proprietà che imposterebbe normalmente durante la creazione dell'istanza. Ad esempio, per sostituire il tipo di macchina, la chiamata API includerà il parametromachineType
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/NEW_MACHINE_TYPE", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Sostituisci quanto segue:
Comportamento di override
Il comportamento dell'override nell'API Compute Engine segue le regole del patch di unione JSON, descritte da RFC 7396. In sintesi, si applicano le seguenti regole:
Ad esempio, se vuoi creare una VM da un'immagine macchina e creare dischi regionali con la VM, utilizza una sostituzione per i dischi in modo da poter specificare l'opzione
replicaZones
. Poiché il campodisks
è un campo ripetuto, devi specificare la configurazione del disco per tutti i dischi collegati e il disco di avvio, non solo per i dischi regionali.POST https://compute.googleapis.com/compute/v1/projects/my-proj/zones/us-west1-a/instances { "name": "vm-from-image", "sourceMachineImage": "global/machineImages/my-machine-image", "disks": [ { "kind": "compute#attachedDisks", "boot": true, "autoDelete": true, "deviceName": "boot-device", "initializeParams": { "sourceImage": "projects/my-proj/global/images/my-image", "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", } }, { "kind": "compute#attachedDisk", "boot": false, "autoDelete": true, "deviceName": "regional-device-0", "initializeParams": { "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", "replicaZones": [ "projects/my-proj/zones/us-west1-a", "projects/my-proj/zones/us-west1-c" ] } } ] }
Creare un'istanza utilizzando un'immagine macchina di un altro progetto
Quando crei un'istanza utilizzando un'immagine della macchina di un altro progetto, potresti non avere accesso all'account di servizio collegato al progetto di origine. Se vuoi creare un'istanza da un'immagine macchina situata in un altro progetto, devi assicurarti di avere accesso all'immagine macchina e di sostituire la proprietà dell'account di servizio nella nuova istanza.
Se condividi un'immagine macchina tra progetti che utilizzano una rete VPC condivisa, devi specificare esplicitamente i dettagli del VPC condiviso quando crei un'istanza dall'immagine macchina. Ad esempio, quando crei un'istanza in un progetto non host, fornisci i dettagli del VPC condiviso del progetto host utilizzando i flag
--network
,--subnet
o--network-interface
.Le sezioni seguenti descrivono come creare un'istanza da un'immagine macchina situata in un altro progetto utilizzando Google Cloud CLI.
Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-02-06 UTC.
-