Crea una prenotazione condivisa

Questo documento spiega come creare prenotazioni condivise, ovvero prenotazioni condivise tra più progetti, e come gestire i progetti nella tua organizzazione che possono utilizzare le prenotazioni condivise.

Una prenotazione condivisa può essere utilizzata dal progetto che ospita la prenotazione (progetto proprietario) e dai progetti con cui la prenotazione è condivisa (progetti consumer). Utilizza le prenotazioni condivise se l'organizzazione ha più progetti che richiedono istanze di macchine virtuali (VM) con le stesse proprietà prenotate. Utilizzando le prenotazioni condivise, puoi migliorare l'utilizzo delle prenotazioni e ridurre il numero di prenotazioni da creare e gestire. Per saperne di più sulle prenotazioni, consulta Prenotazioni di risorse di zona di Compute Engine.

Per altri metodi di creazione delle prenotazioni, consulta le seguenti pagine:

  • Se hai impegni di 1 o 3 anni nel progetto attuale, le risorse prenotate riceveranno automaticamente eventuali sconti per impegno di utilizzo (CUD) applicabili. Puoi anche creare e collegare una prenotazione a un impegno al momento dell'acquisto. Per scoprire di più, consulta Collegare le prenotazioni agli impegni.

  • Per creare una prenotazione che può essere utilizzata solo da un singolo progetto, consulta Creare una prenotazione per un singolo progetto.

Prima di iniziare

  • Esamina i requisiti e le limitazioni per le prenotazioni.
  • Esamina i requisiti e le limitazioni per le prenotazioni condivise.
  • Assicurati che il progetto che utilizzi per creare prenotazioni condivise sia stato aggiunto alla lista consentita per il vincolo dei progetti del proprietario delle prenotazioni condivise (compute.sharedReservationsOwnerProjects) da parte di un amministratore dei criteri dell'organizzazione. Questa lista consentita è vuota per impostazione predefinita, quindi non puoi creare prenotazioni condivise finché la tua organizzazione non concede questa autorizzazione a uno o più progetti. Per maggiori dettagli su come visualizzare e modificare il vincolo del criterio dell'organizzazione, vedi Consentire e limitare la creazione e la modifica delle prenotazioni condivise ai progetti in questo documento.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.

    Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:

    Console

    Quando utilizzi la console Google Cloud per accedere ai servizi e alle API di Google Cloud, non devi configurare l'autenticazione.

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Imposta una regione e una zona predefinite.

    Terraform

    Per utilizzare gli esempi Terraform in questa pagina da un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.
    2. Per initialize gcloud CLI, esegui questo comando:

      gcloud init
    3. Crea credenziali di autenticazione locali per il tuo Account Google:

      gcloud auth application-default login

    Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare prenotazioni condivise, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per creare prenotazioni condivise. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per creare prenotazioni condivise sono necessarie le seguenti autorizzazioni:

  • compute.reservations.create sul progetto
  • Per visualizzare i criteri dell'organizzazione: orgpolicy.policy.get nell'organizzazione
  • Per modificare i criteri dell'organizzazione: orgpolicy.policy.set nell'organizzazione
  • Per specificare un modello di istanza: compute.instanceTemplates.useReadOnly sul modello di istanza

Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.

best practice

Quando crei prenotazioni condivise, ti consigliamo di attenerti alle seguenti best practice. Seguendo questi suggerimenti, puoi ottimizzare la gestibilità e l'utilizzo delle prenotazioni condivise nella tua organizzazione.

  • Fai in modo che il progetto del proprietario crei la prenotazione condivisa ma non la utilizzi.
    • Per distribuire la spesa tra i progetti, è consigliabile che solo i progetti consumer utilizzino una prenotazione condivisa. Il progetto proprietario deve essere utilizzato solo per creare la prenotazione condivisa.
    • Il progetto proprietario deve disporre di una quota sufficiente per poter prenotare il doppio delle risorse. Per maggiori informazioni, consulta Requisiti aggiuntivi per le prenotazioni condivise.
  • Riduci al minimo il numero di progetti nella tua organizzazione consentiti per creare prenotazioni condivise. Puoi controllare questa opzione mediante il vincolo del criterio dell'organizzazione progetti del proprietario delle prenotazioni condivise (compute.sharedReservationsOwnerProjects).
    • Puoi elencare solo le prenotazioni create da ciascun progetto. Ciò significa che le prenotazioni condivise sono elencate solo nel progetto del proprietario e non puoi elencare le prenotazioni condivise con ogni progetto né tutte le prenotazioni condivise in ogni organizzazione. Di conseguenza, avere solo pochi progetti proprietario semplifica il monitoraggio e la gestione delle prenotazioni condivise.
    • Limita la condivisione di una prenotazione condivisa solo ad alcuni progetti per gestire più facilmente la quota delle risorse prenotate.
    • Per maggiori informazioni, consulta Consentire e impedire ai progetti di creare e modificare le prenotazioni condivise.
  • Riduci al minimo il numero di prenotazioni condivise separate con proprietà di VM identiche.
    • Un'organizzazione può avere fino a 100 prenotazioni condivise per ogni combinazione univoca di proprietà VM. Di conseguenza, ridurre al minimo il numero di prenotazioni condivise con proprietà VM identiche create da te consente di mitigare questo limite.
    • Avere meno prenotazioni condivise migliora la gestibilità.
  • Condividi le prenotazioni solo tra progetti con lo stesso account di fatturazione Cloud.
    • Limita ogni prenotazione condivisa in modo che sia condivisa solo con i progetti consumer che hanno lo stesso account di fatturazione Cloud del progetto proprietario. In questo modo, puoi vedere più facilmente se una prenotazione è stata utilizzata e come è stata fatturata.
    • Se hai abilitato la condivisione dello sconto per impegno di utilizzo (CUD) e hai l'idoneità a ricevere sconti per impegno di utilizzo (CUD) a livello di account di fatturazione Cloud, per massimizzare gli sconti per impegno di utilizzo (CUD) ricevuti per le prenotazioni utilizzate, limita le prenotazioni condivise all'account di fatturazione Cloud dell'impegno. In questo modo potrai mantenere una fatturazione coerente tra i progetti che creano e utilizzano prenotazioni condivise.

Consenti e limita la creazione e la modifica delle prenotazioni condivise da parte dei progetti

Per impostazione predefinita, nessun progetto può creare o modificare prenotazioni condivise in un'organizzazione. Aggiungi progetti al vincolo del criterio dell'organizzazione per i progetti del proprietario delle prenotazioni condivise (compute.sharedReservationsOwnerProjects) per consentire agli utenti di creare e modificare le prenotazioni condivise. Per ulteriori informazioni sui vincoli dei criteri dell'organizzazione, consulta Introduzione al servizio Criteri dell'organizzazione.

Segui questi passaggi per visualizzare e modificare il vincolo del criterio dell'organizzazione Progetti proprietario di prenotazioni condivise (compute.sharedReservationsOwnerProjects).

Visualizza il vincolo del criterio dell'organizzazione delle prenotazioni condivise

Per vedere quali progetti sono autorizzati a creare e modificare le prenotazioni condivise, utilizza la console Google Cloud o gcloud CLI.

Console

Segui i passaggi per visualizzare i criteri dell'organizzazione utilizzando il vincolo progetti del proprietario delle prenotazioni condivise.

gcloud

Per visualizzare quali progetti il vincolo compute.sharedReservationsOwnerProjects consente di creare e modificare le prenotazioni condivise:

  1. Scarica il criterio per la tua organizzazione come file denominato policy.yaml utilizzando il comando gcloud resource-manager org-policies describe:

    gcloud resource-manager org-policies describe compute.sharedReservationsOwnerProjects --organization=ORGANIZATION_ID > policy.yaml
    

    Sostituisci ORGANIZATION_ID con l'ID organizzazione della tua organizzazione.

  2. Utilizza un editor di testo per aprire il file policy.yaml e visualizzare il vincolo compute.sharedReservationsOwnerProjects. I progetti a cui è consentito creare e modificare le prenotazioni condivise sono elencati sotto il relativo allowedValues:

    ...
    constraint: constraints/compute.sharedReservationsOwnerProjects
    listPolicy:
      allowedValues:
      - projects/PROJECT_NUMBER_1
      - projects/PROJECT_NUMBER_2
      - projects/PROJECT_NUMBER_3
    ...
    

    dove PROJECT_NUMBER_1, PROJECT_NUMBER_2 e PROJECT_NUMBER_3 sono i numeri di progetto degli unici progetti della tua organizzazione autorizzati a creare prenotazioni condivise.

  3. (Facoltativo) Elimina il file policy.yaml.

    • Se usi un terminale Linux o macOS, utilizza il seguente comando:

      rm policy.yaml
      
    • Se utilizzi un terminale Windows, utilizza il seguente comando:

      del policy.yaml
      

Modifica il vincolo del criterio dell'organizzazione delle prenotazioni condivise

Per modificare i progetti autorizzati a creare e modificare prenotazioni condivise, utilizza la console Google Cloud o gcloud CLI.

Console

Segui i passaggi per personalizzare i criteri per i vincoli di elenco utilizzando il vincolo progetti proprietario delle prenotazioni condivise.

gcloud

Per modificare i progetti che il vincolo compute.sharedReservationsOwnerProjects consente di creare e modificare le prenotazioni condivise, utilizza uno dei seguenti metodi:

  • Per concedere a un singolo progetto l'autorizzazione a creare e modificare prenotazioni condivise, utilizza il gcloud resource-manager org-policies allow comando. Puoi ripetere il comando per ogni progetto a cui vuoi concedere l'autorizzazione.

    gcloud resource-manager org-policies allow compute.sharedReservationsOwnerProjects projects/PROJECT_NUMBER \
        --organization=ORGANIZATION_ID
    

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il numero di progetto (non l'ID progetto) di un progetto nell'organizzazione a cui vuoi consentire di creare e modificare prenotazioni condivise.
    • ORGANIZATION_ID: l'ID organizzazione della tua organizzazione.
  • Per concedere o revocare le autorizzazioni a più progetti per creare e modificare le prenotazioni condivise, sostituisci il vincolo del criterio dell'organizzazione:

    1. Per scaricare il criterio per la tua organizzazione come file denominato policy.yaml, utilizza il comando gcloud resource-manager org-policies describe:

      gcloud resource-manager org-policies describe compute.sharedReservationsOwnerProjects --organization=ORGANIZATION_ID > policy.yaml
      

      Sostituisci ORGANIZATION_ID con l'ID organizzazione della tua organizzazione.

    2. Utilizza un editor di testo per modificare il file policy.yaml in modo che il vincolo compute.sharedReservationsOwnerProjects elenca tutti i progetti a cui vuoi consentire di creare e modificare prenotazioni condivise in allowedValues.

      • Per ogni progetto a cui vuoi concedere l'autorizzazione per creare e modificare prenotazioni condivise, aggiungi il progetto in una nuova riga in allowedValues.
      • Per ogni progetto per cui vuoi revocare l'autorizzazione a creare e modificare prenotazioni condivise, elimina la riga per quel progetto.

      Al termine, assicurati che il file policy.yaml sia simile al seguente:

      ...
      constraint: constraints/compute.sharedReservationsOwnerProjects
      listPolicy:
        allowedValues:
        - projects/PROJECT_NUMBER_1
        - projects/PROJECT_NUMBER_2
        - projects/PROJECT_NUMBER_3
      ...
      

      dove PROJECT_NUMBER_1, PROJECT_NUMBER_2 e PROJECT_NUMBER_3 sono i numeri di progetto (non gli ID progetto) di tutti i progetti dell'organizzazione per i quali vuoi disporre dell'autorizzazione per creare e modificare prenotazioni condivise.

    3. Salva il file policy.yaml e chiudi l'editor di testo.

    4. Per aggiornare il criterio per la tua organizzazione con le modifiche, utilizza il comando gcloud resource-manager org-policies set-policy:

      gcloud resource-manager org-policies set-policy --organization=ORGANIZATION_ID policy.yaml
      

      Sostituisci ORGANIZATION_ID con l'ID organizzazione della tua organizzazione.

    5. (Facoltativo) Elimina il file policy.yaml.

      • Se usi un terminale Linux o macOS, utilizza il seguente comando:

        rm policy.yaml
        
      • Se utilizzi un terminale Windows, utilizza il seguente comando:

        del policy.yaml
        

Potresti dover attendere qualche minuto prima che la modifica abbia effetto.

Crea una prenotazione condivisa

Questa sezione spiega come creare prenotazioni condivise. Dopo aver creato una prenotazione condivisa, questa può essere modificata solo dal progetto proprietario, ma le risorse per una prenotazione condivisa possono essere utilizzate dal progetto proprietario o da qualsiasi progetto consumer.

Per utilizzare una prenotazione, una VM deve avere proprietà che corrispondono esattamente alla prenotazione. Per specificare le proprietà delle VM da prenotare, seleziona una delle seguenti sezioni di questo documento:

  • Opzione consigliata: Specifica un modello di istanza

    Questa sezione spiega come utilizzare un modello di istanza per definire le proprietà di una prenotazione condivisa. Utilizzando un modello di istanza, puoi definire le proprietà di una prenotazione e le VM che possono utilizzare la prenotazione nella stessa posizione. Tuttavia, poiché i modelli sono specifici del progetto, non puoi utilizzare lo stesso modello per creare VM che possono utilizzare la prenotazione al di fuori del progetto che ha creato la prenotazione. Per i progetti con cui è condivisa la prenotazione, devi creare modelli simili all'interno dei progetti stessi o creare VM specificando direttamente le proprietà.

  • Specificare direttamente le proprietà

    Questa sezione spiega come definire direttamente le proprietà di una prenotazione condivisa. Questo metodo richiede di assicurarti manualmente che le proprietà delle VM e delle prenotazioni corrispondano esattamente e che tutte le le proprietà non corrispondenti impediscono il consumo.

Per impostazione predefinita, una prenotazione può essere utilizzata automaticamente da qualsiasi VM con proprietà corrispondenti. Se vuoi controllare il consumo delle prenotazioni, esegui una o più delle seguenti operazioni:

Specifica un modello di istanza

Per creare una prenotazione condivisa specificando un modello di istanza, puoi utilizzare la console Google Cloud, gcloud CLI o REST.

Console

Per creare una prenotazione condivisa specificando un modello di istanza:

  1. Nella console Google Cloud, vai alla pagina Prenotazioni.

    Vai a Prenotazioni

    Viene visualizzata la pagina Prenotazioni.

  2. Fai clic su Crea prenotazione.

    Viene visualizzata la pagina Crea una prenotazione.

  3. Nel campo Nome, inserisci un nome per la prenotazione.

  4. Seleziona la regione e la zona in cui vuoi prenotare le risorse.

  5. Nella sezione Tipo di condivisione, procedi nel seguente modo:

    1. Per specificare una prenotazione condivisa, fai clic su Condivisa.

    2. Fai clic su Aggiungi progetti, quindi seleziona i progetti dell'organizzazione del progetto attuale con cui vuoi condividere la prenotazione.

  6. Nella sezione Utilizza con istanza VM, seleziona una delle seguenti opzioni:

    • Per consentire alle istanze VM corrispondenti di utilizzare automaticamente questa prenotazione, fai clic su Utilizza prenotazione automaticamente (impostazione predefinita).

    • Per utilizzare le risorse di questa prenotazione solo quando crei VM corrispondenti che hanno come target specificamente questa prenotazione per nome, fai clic su Seleziona prenotazione specifica.

  7. Nel campo Numero di istanze VM, inserisci il numero di VM che vuoi prenotare.

  8. Nella sezione Configurazione macchina, segui questi passaggi:

    1. Per specificare le proprietà delle VM da un modello di istanza esistente, seleziona Utilizza modello di istanza.

    2. Nel campo Modello di istanza, seleziona il modello di istanza che preferisci. Se selezioni un modello di istanza a livello di regione, puoi prenotare risorse solo all'interno della regione del modello di istanza.

  9. Nella sezione Eliminazione automatica, puoi abilitare l'opzione di eliminazione automatica per consentire a Compute Engine di eliminare automaticamente la prenotazione in una data e un orario specifici. L'eliminazione automatica delle prenotazioni può essere utile per evitare addebiti inutili quando smetti di utilizzare la prenotazione.

  10. Per creare la prenotazione, fai clic su Crea.

    La creazione della prenotazione condivisa potrebbe richiedere un po' di tempo. Questa azione ti reindirizza alla pagina Prenotazioni.

gcloud

Per creare una prenotazione condivisa specificando un modello di istanza, utilizza il comando gcloud compute reservations create.

Per creare una prenotazione condivisa specificando un modello di istanza senza flag facoltativi, esegui questo comando:

gcloud compute reservations create RESERVATION_NAME \
    --project=PROJECT_ID \
    --share-setting=projects \
    --share-with=CONSUMER_PROJECT_IDS \
    --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

Sostituisci quanto segue:

  • RESERVATION_NAME: il nome della prenotazione da creare.

  • PROJECT_ID: l'ID del progetto in cui vuoi prenotare le risorse e dove esiste il modello di istanza.

  • CONSUMER_PROJECT_IDS: un elenco separato da virgole di ID di progetti che possono utilizzare questa prenotazione, ad esempio project-1,project-2. Puoi includere fino a 100 progetti consumer. Questi progetti devono trovarsi nella stessa organizzazione del progetto proprietario. Non includere il progetto del proprietario. Per impostazione predefinita, è già consentito utilizzare la prenotazione.

  • LOCATION: la posizione del modello di istanza. Specifica uno dei seguenti valori:

    • Per un modello di istanza globale: global.

    • Per un modello di istanza a livello di regione: regions/REGION. Sostituisci REGION con la regione in cui si trova il modello di istanza. Se specifichi un modello di istanza a livello di regione, puoi prenotare le VM solo all'interno della regione del modello di istanza.

  • INSTANCE_TEMPLATE_NAME: il nome di un modello di istanza esistente. Se specifichi un modello di istanza, non puoi eseguire l'override di nessuna delle sue proprietà durante la creazione della prenotazione. In caso contrario, riscontrerai errori.

  • NUMBER_OF_VMS: il numero di VM da prenotare.

  • ZONE: la zona in cui prenotare le risorse.

Ad esempio, per creare una prenotazione specificando un modello di istanza globale nella zona us-central1-a, condividere la prenotazione con i progetti project-1 e project-2 e prenotare dieci VM che usano ciascuna un tipo di macchina predefinita N2 con 4 vCPU, esegui questo comando:

gcloud compute reservations create my-reservation \
    --project=example-project \
    --share-setting=projects \
    --share-with=project-1,project-2 \
    --source-instance-template=projects/example-project/global/example-instance-template \
    --vm-count=10 \
    --zone=us-central1-a

Facoltativamente, puoi eseguire una o più delle seguenti operazioni:

  • Per specificare che solo le VM che hanno come target questa prenotazione possono utilizzarla, includi il flag --require-specific-reservation.

    gcloud compute reservations create example-reservation \
        --require-specific-reservation \
        ...
    
  • Per consentire a Compute Engine di eliminare automaticamente la prenotazione, seleziona uno dei seguenti metodi:

    • Per eliminare la prenotazione in una data e un'ora specifiche, utilizza il comando gcloud beta compute reservations create e includi il flag --delete-at-time.

      gcloud beta compute reservations create reservation-example \
          --delete-at-time=DELETE_AT_TIME \
          ...
      

      Sostituisci DELETE_AT_TIME con una data e un'ora formattate come timestamp RFC 3339, che deve essere il seguente:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Sostituisci quanto segue:

      • YYYY-MM-DD: una data formattata come giorno del mese a 4 cifre, a 2 cifre e mese a 2 cifre, separate da trattini (-).

      • HH:MM:SS: un'ora formattata come ora a due cifre con formato di 24 ore, minuti a due cifre e secondi a due cifre, separati dai due punti (:).

      • OFFSET: il fuso orario formattato come offset del Tempo coordinato universale (UTC). Ad esempio, per utilizzare il fuso orario PST (Pacific Standard Time), specifica -08:00. In alternativa, per non usare alcun offset, specifica Z.

    • Per eliminare la prenotazione dopo un determinato periodo di tempo, utilizza il comando gcloud beta compute reservations create e includi il flag --delete-after-duration.

      gcloud beta compute reservations create reservation-example \
          --delete-after-duration=DELETE_AFTER_DURATION \
          ...
      

      Sostituisci DELETE_AFTER_DURATION con una durata espressa in giorni, ore, minuti o secondi. Ad esempio, specifica 30m per 30 minuti o 1d2h3m4s per 1 giorno, 2 ore, 3 minuti e 4 secondi.

REST

Per creare una prenotazione condivisa specificando un modello di istanza, effettua una richiesta POST al metodo reservations.insert.

Ad esempio, per creare una prenotazione condivisa specificando un modello di istanza senza campi facoltativi e condividere la prenotazione con due progetti consumer, effettua la seguente richiesta POST:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations

{
  "name": "RESERVATION_NAME",
  "shareSettings": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "CONSUMER_PROJECT_ID_1": {
        "projectId": "CONSUMER_PROJECT_ID_1"
      },
      "CONSUMER_PROJECT_ID_2": {
        "projectId": "CONSUMER_PROJECT_ID_2"
      }
    }
  },
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui vuoi prenotare le risorse e dove esiste il modello di istanza.

  • ZONE: la zona in cui prenotare le risorse.

  • RESERVATION_NAME: il nome della prenotazione da creare.

  • CONSUMER_PROJECT_ID_1 e CONSUMER_PROJECT_ID_2: gli ID dei progetti che possono utilizzare questa prenotazione. Puoi includere fino a 100 progetti consumer. Questi progetti devono trovarsi nella stessa organizzazione del progetto proprietario. Non includere il progetto del proprietario. Per impostazione predefinita, è già consentito utilizzare la prenotazione.

  • NUMBER_OF_VMS: il numero di VM da prenotare.

  • LOCATION: la posizione del modello di istanza. Specifica uno dei seguenti valori:

    • Per un modello di istanza globale: global.

    • Per un modello di istanza a livello di regione: regions/REGION. Sostituisci REGION con la regione in cui si trova il modello di istanza. Se specifichi un modello di istanza a livello di regione, puoi prenotare le VM solo all'interno della regione del modello di istanza.

  • INSTANCE_TEMPLATE_NAME: il nome di un modello di istanza esistente. Se specifichi un modello di istanza, non puoi eseguire l'override di nessuna delle sue proprietà durante la creazione della prenotazione. In caso contrario, riscontrerai errori.

Ad esempio, per creare una prenotazione per dieci VM nella zona us-central1-a specificando un modello di istanza globale e condividere la prenotazione con i progetti project-1 e project-2, effettua la seguente richiesta POST:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations

{
  "name": "my-reservation",
  "shareSettings": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "project-1": {
        "projectId": "project-1"
      },
      "project-2": {
        "projectId": "project-2"
      }
    }
  },
  "specificReservation": {
    "count": "10",
    "sourceInstanceTemplate": "projects/example-project/global/instanceTemplates/example-instance-template"
  }
}

Facoltativamente, puoi eseguire una o più delle seguenti operazioni:

  • Per specificare che solo le VM che hanno come target questa prenotazione possono utilizzarla, includi il campo specificReservationRequired nel corpo della richiesta e impostalo su true.

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservationRequired": true,
      ...
    }
    
  • Per consentire a Compute Engine di eliminare automaticamente la prenotazione, seleziona uno dei seguenti metodi:

    • Per eliminare la prenotazione in una data e un'ora specifiche, effettua una richiesta POST utilizzando il metodo beta.reservations.insert. Nel corpo della richiesta, includi il campo deleteAtTime.

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAtTime": "DELETE_AT_TIME",
        ...
      }
      

      Sostituisci DELETE_AT_TIME con una data e un'ora formattate come un timestamp RFC 3339, che deve essere come segue:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Sostituisci quanto segue:

      • YYYY-MM-DD: una data formattata come giorno del mese a 4 cifre, a 2 cifre e mese a 2 cifre, separate da trattini (-).

      • HH:MM:SS: un'ora formattata come ora a due cifre con formato di 24 ore, minuti a due cifre e secondi a due cifre, separati dai due punti (:).

      • OFFSET: il fuso orario formattato come offset del Tempo coordinato universale (UTC). Ad esempio, per utilizzare il fuso orario PST (Pacific Standard Time), specifica -08:00. In alternativa, per non usare alcun offset, specifica Z.

    • Per eliminare la prenotazione dopo una durata specifica, effettua una richiesta POST utilizzando il metodo beta.reservations.insert. Nel corpo della richiesta, includi il campo deleteAfterDuration.

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAfterDuration": {
          "seconds": "DELETE_AFTER_DURATION"
        },
        ...
      }
      

      Sostituisci DELETE_AFTER_DURATION con una durata in secondi. Ad esempio, specifica 86400 per 86.400 secondi (1 giorno).

Specifica direttamente le proprietà della VM

Per creare una prenotazione condivisa specificando direttamente le proprietà, utilizza la console Google Cloud, gcloud CLI, Terraform o REST.

Console

Per creare una prenotazione condivisa, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Prenotazioni.

    Vai a Prenotazioni

    Viene visualizzata la pagina Prenotazioni.

  2. Fai clic su Crea prenotazione.

    Viene visualizzata la pagina Crea una prenotazione.

  3. Nel campo Nome, inserisci un nome per la prenotazione.

  4. Seleziona la regione e la zona in cui vuoi prenotare le risorse.

  5. Nella sezione Tipo di condivisione, procedi nel seguente modo:

    1. Per specificare una prenotazione condivisa, fai clic su Condivisa.

    2. Fai clic su Aggiungi progetti, quindi seleziona i progetti dell'organizzazione del progetto attuale con cui vuoi condividere la prenotazione.

  6. Nella sezione Utilizza con istanza VM, seleziona una delle seguenti opzioni:

    • Per consentire alle VM corrispondenti di consumare automaticamente questa prenotazione, fai clic su Utilizza prenotazione automaticamente (impostazione predefinita).

    • Per utilizzare le risorse di questa prenotazione solo quando crei VM corrispondenti che hanno come target specificamente questa prenotazione per nome, fai clic su Seleziona prenotazione specifica.

  7. Nel campo Numero di istanze VM, inserisci il numero di VM che vuoi prenotare.

  8. Nella sezione Configurazione macchina, seleziona Specifica il tipo di macchina, quindi specifica quanto segue:

    1. Nei campi Famiglia di macchine, Serie e Tipo di macchina, seleziona una famiglia di macchine, una serie e un tipo di macchina.

    2. (Facoltativo) Per specificare una piattaforma CPU e/o una GPU minima, segui questi passaggi:

      1. Per espandere la sezione Piattaforma CPU e GPU, fai clic sulla freccia di espansione .

      2. (Facoltativo) Per specificare una piattaforma CPU minima, seleziona un'opzione nell'elenco Piattaforma CPU.

      3. (Facoltativo) Per aggiungere GPU, fai clic su Aggiungi GPU. Quindi, nei campi Tipo di GPU e Numero di GPU, seleziona il tipo e il numero di GPU per ogni VM.

    3. (Facoltativo) Per aggiungere SSD locali:

      1. Nel campo Numero di dischi, seleziona il numero di SSD locali per ogni VM.

      2. Nel campo Tipo di interfaccia, seleziona l'interfaccia per le SSD locali.

  9. Nella sezione Eliminazione automatica, puoi abilitare l'opzione di eliminazione automatica per consentire a Compute Engine di eliminare automaticamente la prenotazione in una data e un orario specifici. L'eliminazione automatica delle prenotazioni può essere utile per evitare addebiti inutili quando smetti di utilizzare la prenotazione.

  10. Per creare la prenotazione, fai clic su Crea.

    La creazione della prenotazione condivisa potrebbe richiedere un po' di tempo. Questa azione ti reindirizza alla pagina Prenotazioni.

gcloud

Per creare una prenotazione condivisa, utilizza il comando gcloud compute reservations create.

Per creare una prenotazione condivisa senza flag facoltativi, esegui questo comando:

gcloud compute reservations create RESERVATION_NAME \
    --machine-type=MACHINE_TYPE \
    --project=PROJECT_ID \
    --share-setting=projects \
    --share-with=CONSUMER_PROJECT_IDS \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

Sostituisci quanto segue:

  • RESERVATION_NAME: il nome della prenotazione da creare.

  • MACHINE_TYPE: un tipo di macchina da utilizzare per ogni VM. Specifica uno dei seguenti valori:

    • Per un tipo di macchina predefinita: MACHINE_FAMILY-standard-CPUS.

    • Per un tipo di macchina personalizzata: MACHINE_FAMILY-custom-CPUS-MEMORY. Prima di specificare un tipo di macchina personalizzata, esamina le limitazioni per le VM con tipi di macchine personalizzate.

    Sostituisci quanto segue:

    • MACHINE_FAMILY: la famiglia di macchine.

    • CPUS: il numero di vCPU.

    • MEMORY: la memoria totale per una VM riservata. La memoria deve essere un multiplo di 256 MB ed essere fornita in MB.

    Ad esempio, per specificare un tipo di macchina personalizzata N2 con 4 vCPU e 5 GB di memoria, pari a 5120 MB, specifica n2-custom-4-5120.

  • PROJECT_ID: l'ID del progetto in cui vuoi prenotare le risorse.

  • CONSUMER_PROJECT_IDS: un elenco separato da virgole di ID di progetti che possono utilizzare questa prenotazione, ad esempio project-1,project-2. Puoi includere fino a 100 progetti consumer. Questi progetti devono trovarsi nella stessa organizzazione del progetto proprietario. Non includere il progetto del proprietario. Per impostazione predefinita, è già consentito utilizzare la prenotazione.

  • NUMBER_OF_VMS: il numero di VM da prenotare.

  • ZONE: la zona in cui prenotare le risorse.

Ad esempio, per creare una prenotazione per dieci VM nella zona us-central1-a specificando un modello di istanza globale e condividere la prenotazione con i progetti project-1 e project-2, esegui questo comando:

gcloud compute reservations create my-reservation \
    --machine-type=n2-standard-4 \
    --project=example-project \
    --share-setting=projects \
    --share-with=project-1,project-2 \
    --vm-count=10 \
    --zone=us-central1-a

Facoltativamente, puoi eseguire una o più delle seguenti operazioni:

  • Per aggiungere Graphics Processing Unit (GPU) a ogni VM prenotata, includi il flag --accelerator.

    gcloud compute reservations create my-reservation \
        --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
        ...
    

    Sostituisci quanto segue:

    • NUMBER_OF_ACCELERATORS: il numero di GPU da aggiungere per VM prenotata.

    • ACCELERATOR_TYPE: il tipo di GPU da aggiungere alle VM prenotate.

    Assicurati che il tipo di macchina specificato nella prenotazione supporti i tipi di GPU specificati e che la GPU sia disponibile nella zona in cui vuoi prenotare le risorse. In caso contrario, la creazione della prenotazione non va a buon fine.

  • Per aggiungere uno o più SSD locali a ogni VM prenotata, includi uno o più flag --local-ssd. Puoi specificare fino a 24 SSD locali. Ogni SSD locale ha una dimensione di 375 GB.

    Ad esempio, per specificare due SSD locali durante la creazione di una prenotazione, includi due flag --local-ssd.

    gcloud compute reservations create my-reservation \
        --local-ssd=size=375,interface=INTERFACE_1 \
        --local-ssd=size=375,interface=INTERFACE_2 \
        ...
    

    Sostituisci INTERFACE_1 e INTERFACE_2 con il tipo di interfaccia da utilizzare per ogni unità SSD locale. Specifica uno dei seguenti valori:

    • Per le interfacce dei dischi NVME: nvme.

    • Per le interfacce del disco SCSI: scsi.

    Assicurati che il tipo di macchina specificato per le VM prenotate supporti le interfacce del disco scelte. In caso contrario, la creazione della prenotazione non va a buon fine. Per maggiori informazioni, consulta la pagina su come scegliere un'interfaccia del disco.

  • Per fare in modo che le VM prenotate utilizzino una piattaforma CPU minima specifica anziché la piattaforma CPU predefinita della zona, includi il flag --min-cpu-platform.

    gcloud compute reservations create my-reservation \
        --min-cpu-platform="MIN_CPU_PLATFORM" \
        ...
    

    Sostituisci MIN_CPU_PLATFORM con una piattaforma CPU minima. Per assicurarti che una piattaforma CPU sia disponibile nella zona in cui stai prenotando le risorse, visualizza le piattaforme CPU disponibili per zona.

  • Per specificare che solo le VM che hanno come target questa prenotazione possono utilizzarla, includi il flag --require-specific-reservation.

    gcloud compute reservations create example-reservation \
        --require-specific-reservation \
        ...
    
  • Per consentire a Compute Engine di eliminare automaticamente la prenotazione, seleziona uno dei seguenti metodi:

    • Per eliminare la prenotazione in una data e un'ora specifiche, utilizza il comando gcloud beta compute reservations create e includi il flag --delete-at-time.

      gcloud beta compute reservations create reservation-example \
          --delete-at-time=DELETE_AT_TIME \
          ...
      

      Sostituisci DELETE_AT_TIME con una data e un'ora formattate come timestamp RFC 3339, che deve essere il seguente:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Sostituisci quanto segue:

      • YYYY-MM-DD: una data formattata come giorno del mese a 4 cifre, a 2 cifre e mese a 2 cifre, separate da trattini (-).

      • HH:MM:SS: un'ora formattata come ora a due cifre con formato di 24 ore, minuti a due cifre e secondi a due cifre, separati dai due punti (:).

      • OFFSET: il fuso orario formattato come offset del Tempo coordinato universale (UTC). Ad esempio, per utilizzare il fuso orario PST (Pacific Standard Time), specifica -08:00. In alternativa, per non usare alcun offset, specifica Z.

    • Per eliminare la prenotazione dopo un determinato periodo di tempo, utilizza il comando gcloud beta compute reservations create e includi il flag --delete-after-duration.

      gcloud beta compute reservations create reservation-example \
          --delete-after-duration=DELETE_AFTER_DURATION \
          ...
      

      Sostituisci DELETE_AFTER_DURATION con una durata espressa in giorni, ore, minuti o secondi. Ad esempio, specifica 30m per 30 minuti o 1d2h3m4s per 1 giorno, 2 ore, 3 minuti e 4 secondi.

Terraform

Per creare una prenotazione, utilizza la risorsa Terraform google_compute_reservation. Per specificare una prenotazione condivisa, definisci il blocco share_settings:

  • Imposta il campo share_type su SPECIFIC_PROJECTS.
  • Nel blocco project_map, specifica gli ID progetto dei progetti con cui vuoi condividere questa prenotazione.

Per saperne di più su come utilizzare Terraform, consulta Utilizzo di Terraform con Google Cloud.

REST

Per creare una prenotazione condivisa, effettua una richiesta POST utilizzando il metodo reservations.insert.

Ad esempio, per creare una prenotazione condivisa senza campi facoltativi e condividere la prenotazione con due progetti consumer, effettua la seguente richiesta POST:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations

{
  "name": "RESERVATION_NAME",
  "shareSettings": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "CONSUMER_PROJECT_ID_1": {
        "projectId": "CONSUMER_PROJECT_ID_1"
      },
      "CONSUMER_PROJECT_ID_2": {
        "projectId": "CONSUMER_PROJECT_ID_2"
      }
    }
  },
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "instanceProperties": {
      "machineType": "MACHINE_TYPE",
    }
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui vuoi prenotare le risorse.

  • ZONE: la zona in cui prenotare le risorse.

  • RESERVATION_NAME: il nome della prenotazione da creare.

  • CONSUMER_PROJECT_ID_1 e CONSUMER_PROJECT_ID_2: gli ID dei progetti che possono utilizzare questa prenotazione. Puoi includere fino a 100 progetti consumer. Questi progetti devono trovarsi nella stessa organizzazione del progetto proprietario. Non includere il progetto del proprietario. Per impostazione predefinita, è già consentito utilizzare la prenotazione.

  • NUMBER_OF_VMS: il numero di VM da prenotare.

  • MACHINE_TYPE: un tipo di macchina da utilizzare per ogni VM. Specifica uno dei seguenti valori:

    • Per un tipo di macchina predefinita: MACHINE_FAMILY-standard-CPUS.

    • Per un tipo di macchina personalizzata: MACHINE_FAMILY-custom-CPUS-MEMORY. Prima di specificare un tipo di macchina personalizzata, esamina le limitazioni per le VM con tipi di macchine personalizzate.

    Sostituisci quanto segue:

    • MACHINE_FAMILY: la famiglia di macchine.

    • CPUS: il numero di vCPU.

    • MEMORY: la memoria totale per una VM riservata. La memoria deve essere un multiplo di 256 MB ed essere fornita in MB.

    Ad esempio, per specificare un tipo di macchina personalizzata N2 con 4 vCPU e 5 GB di memoria, pari a 5120 MB, specifica n2-custom-4-5120.

Ad esempio, per creare una prenotazione specificando un modello di istanza globale nella zona us-central1-a, condividere la prenotazione con i progetti project-1 e project-2 e prenotare dieci VM che utilizzano ciascuna un tipo di macchina predefinita N2 con 4 vCPU, effettua la seguente richiesta POST:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations

{
  "name": "my-reservation",
  "shareSettings": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "project-1": {
        "projectId": "project-1"
      },
      "project-2": {
        "projectId": "project-2"
      }
    }
  },
  "specificReservation": {
    "count": "10",
    "instanceProperties": {
      "machineType": "n2-standard-4",
    }
  }
}

Facoltativamente, puoi eseguire una o più delle seguenti operazioni:

  • Per aggiungere GPU (Graphics Processing Unit) a ogni VM prenotata, includi il campo guestAccelerators nel corpo della richiesta.

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservation": {
        "instanceProperties": {
          "guestAccelerators": [
            {
              "acceleratorCount": NUMBER_OF_ACCELERATORS,
              "acceleratorType": "ACCELERATOR_TYPE"
            }
          ],
          ...
        },
        ...
      }
    }
    

    Sostituisci quanto segue:

    • NUMBER_OF_ACCELERATORS: il numero di GPU da aggiungere per VM prenotata.

    • ACCELERATOR_TYPE: il tipo di GPU da aggiungere alle VM prenotate.

    Assicurati che il tipo di macchina specificato nella prenotazione supporti i tipi di GPU specificati e che la GPU sia disponibile nella zona in cui vuoi prenotare le risorse. In caso contrario, la creazione della prenotazione non va a buon fine.

  • Per aggiungere uno o più SSD locali a ogni VM prenotata, includi il campo localSsds nel corpo della richiesta. Puoi specificare fino a 24 SSD locali. Ogni SSD locale ha una dimensione di 375 GB.

    Ad esempio, per specificare due SSD locali durante la creazione di una prenotazione, specifica quanto segue:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservation": {
        "instanceProperties": {
          "localSsds": [
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_2"
            }
          ],
          ...
        },
        ...
      }
    }
    

    Sostituisci INTERFACE_1 e INTERFACE_2 con il tipo di interfaccia da utilizzare per ogni unità SSD locale. Specifica uno dei seguenti valori:

    • Per le interfacce dei dischi NVME: NVME.

    • Per le interfacce del disco SCSI: SCSI.

    Assicurati che il tipo di macchina specificato per le VM prenotate supporti le interfacce del disco scelte. In caso contrario, la creazione della prenotazione non va a buon fine. Per maggiori informazioni, consulta la pagina su come scegliere un'interfaccia del disco.

  • Per fare in modo che le VM prenotate utilizzino una piattaforma CPU minima specifica anziché la piattaforma CPU predefinita della zona, includi il campo minCpuPlatform nel corpo della richiesta.

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservation": {
        "instanceProperties": {
          "minCpuPlatform": "MIN_CPU_PLATFORM",
          ...
        },
        ...
      }
    }
    

    Sostituisci MIN_CPU_PLATFORM con una piattaforma CPU minima. Per assicurarti che una piattaforma CPU sia disponibile nella zona in cui stai prenotando le risorse, visualizza le piattaforme CPU disponibili per zona.

  • Per specificare che solo le VM che hanno come target questa prenotazione possono utilizzarla, includi il campo specificReservationRequired nel corpo della richiesta e impostalo su true.

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservationRequired": true,
      ...
    }
    
  • Per consentire a Compute Engine di eliminare automaticamente la prenotazione, seleziona uno dei seguenti metodi:

    • Per eliminare la prenotazione in una data e un'ora specifiche, effettua una richiesta POST utilizzando il metodo beta.reservations.insert. Nel corpo della richiesta, includi il campo deleteAtTime.

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAtTime": "DELETE_AT_TIME",
        ...
      }
      

      Sostituisci DELETE_AT_TIME con una data e un'ora formattate come timestamp RFC 3339, che deve essere il seguente:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Sostituisci quanto segue:

      • YYYY-MM-DD: una data formattata come giorno del mese a 4 cifre, a 2 cifre e mese a 2 cifre, separate da trattini (-).

      • HH:MM:SS: un'ora formattata come ora a due cifre con formato di 24 ore, minuti a due cifre e secondi a due cifre, separati dai due punti (:).

      • OFFSET: il fuso orario formattato come offset del Tempo coordinato universale (UTC). Ad esempio, per utilizzare il fuso orario PST (Pacific Standard Time), specifica -08:00. In alternativa, per non usare alcun offset, specifica Z.

    • Per eliminare la prenotazione dopo una durata specifica, effettua una richiesta POST utilizzando il metodo beta.reservations.insert. Nel corpo della richiesta, includi il campo deleteAfterDuration.

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAfterDuration": {
          "seconds": "DELETE_AFTER_DURATION"
        },
        ...
      }
      

      Sostituisci DELETE_AFTER_DURATION con una durata in secondi. Ad esempio, specifica 86400 per 86.400 secondi (1 giorno).

Passaggi successivi