Pianifica job di applicazione patch

Oltre a eseguire job di applicazione patch on demand, potresti voler avere job di applicazione patch che vengono eseguiti automaticamente in base a una pianificazione prestabilita mediante la creazione di un deployment delle patch.

Ogni deployment di patch può avere una pianificazione una tantum, che esegue un job di applicazione patch in una data e ora specifiche, o una pianificazione ricorrente, che esegue un job di applicazione patch a intervalli specificati.

I filtri delle istanze consentono di applicare patch contemporaneamente a più istanze contemporaneamente. Questi filtri vengono applicati a ogni singolo job di applicazione patch al momento dell'esecuzione. Ciò garantisce che le modifiche al progetto vengano acquisite in tempo reale. Ad esempio, supponiamo che venga creato un deployment delle patch per applicare patch a tutte le istanze nella zona asia-souteast1-b a partire da due settimane a partire da ora. Al momento della creazione della patch, avevi 20 istanze nella zona, ma qualche giorno dopo ne sono state aggiunte 40 nuove. Poiché il filtro viene applicato nel momento in cui viene avviata la patch, vengono aggiornate tutte le 60 istanze. Ciò consente di aggiungere e rimuovere istanze senza dover aggiornare la pianificazione del deployment delle patch.

Prima di iniziare

  • Esamina le quote di configurazione del sistema operativo.
  • 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.

    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

Puoi pianificare i job di applicazione patch utilizzando la console Google Cloud, Google Cloud CLI o REST.

Autorizzazioni

I proprietari di un progetto hanno accesso completo per creare e gestire i deployment delle patch. Per tutti gli altri utenti, devi concedere le autorizzazioni. Puoi concedere uno dei seguenti ruoli granulari:

  • roles/osconfig.patchDeploymentAdmin: contiene le autorizzazioni per creare, eliminare, recuperare ed elencare i deployment delle patch.
  • roles/osconfig.patchDeploymentViewer: contiene le autorizzazioni per l'accesso di sola lettura per ottenere ed elencare i deployment delle patch.

Ad esempio, per concedere a un utente l'accesso amministrativo ai deployment delle patch, esegui questo comando:

gcloud projects add-iam-policy-binding project-id \
    --member user:user-id@gmail.com \
    --role roles/osconfig.patchDeploymentAdmin

Sostituisci quanto segue:

  • project-id: l'ID progetto.
  • user-id: nome utente Google Workspace dell'utente.

Creazione di un deployment delle patch

Quando crei un deployment di patch, il nome deve soddisfare i seguenti requisiti di denominazione:

  • Ogni nome deve essere univoco all'interno di un progetto
  • Contenere solo lettere minuscole, numeri e trattini
  • Inizia con una lettera
  • Deve terminare con un numero o una lettera
  • Deve avere una lunghezza compresa tra 1 e 63 caratteri.

In Google Cloud CLI e REST, il nome del deployment delle patch è indicato come patch-deployment-id.

Dopo aver avviato il deployment delle patch, puoi monitorare le patch utilizzando la dashboard delle patch. Dopo l'avvio di un job di applicazione patch, sono necessari circa 30 minuti prima che i dati vengano completati nella dashboard.

console

  1. Nella console Google Cloud, vai alla pagina Compute Engine > VM Manager > Patch.

    Vai alla pagina Patch

  2. Fai clic su Deployment di nuova patch.
  3. Nella sezione VM di destinazione, seleziona la zona che contiene le VM a cui vuoi applicare la patch. È possibile anche scegliere di selezionare tutte le zone.

    Ad esempio, per applicare la patch a VM specifiche nelle zone selezionate, inserisci i filtri del nome e dell'etichetta simili a quanto segue:

    • Prefisso nome: test-
    • Etichette: env=dev e app=web
  4. Nella sezione Configurazione patch, configura la patch.

    1. Specifica un nome per la patch.
    2. Seleziona gli aggiornamenti richiesti per il tuo sistema operativo. Per ulteriori informazioni, consulta gli elementi inclusi in un job di applicazione patch del sistema operativo.
  5. Nella sezione Pianificazione, completa i seguenti passaggi:

    • Seleziona una pianificazione. Puoi pianificare un job di applicazione patch una tantum o job di applicazione patch ricorrenti.
    • (Facoltativo) Imposta una durata o un periodo di manutenzione.
  6. Nella sezione Opzioni di implementazione, configura le opzioni di implementazione delle patch:

    • Scegli se applicare patch a una zona alla volta o contemporaneamente.
    • Imposta un budget per l'interruzione. Il budget per l'interruzione è il numero o la percentuale di VM in una zona che vuoi interrompere una volta sola dal processo di applicazione delle patch.
  7. (Facoltativo) Nella sezione Opzioni avanzate, puoi completare le seguenti attività:

  8. Fai clic su Esegui il deployment.

gcloud

Utilizza il comando os-config patch-deployments create per creare un deployment delle patch.

gcloud compute os-config patch-deployments create patch-deployment-id \
    --file patch-deployment-file

Sostituisci quanto segue:

  • patch-deployment-id: il nome del deployment delle patch.
  • patch-deployment-file: il percorso del file YAML o JSON che contiene le configurazioni per il deployment delle patch.

File YAML di deployment delle patch di esempio

Il seguente file YAML di esempio può essere utilizzato per creare una pianificazione ricorrente per tutte le istanze nelle zone us-west2-b e us-west2-c. La pianificazione ricorrente ha le seguenti specifiche:

  • La data di inizio è 09 gennaio 2019 alle 19:30
  • La data di fine è il 09 gennaio 2020 alle 19:30
  • Il fuso orario da utilizzare è "America/Los_Angeles"
  • Eseguito ogni settimana di un martedì
instanceFilter:
  zones:
  - us-west2-b
  - us-west2-c
recurringSchedule:
  frequency: WEEKLY
  weekly:
    dayOfWeek: TUESDAY
  timeOfDay:
    hours: 19
    minutes: 30
  timeZone:
    id: America/Los_Angeles
  startTime: '2019-09-01T12:00:00Z'
  endTime: '2020-09-01T12:00:00Z'

REST

Nell'API, crea una richiesta POST per creare un nuovo deployment delle patch. Devi definire esplicitamente tutti i campi di configurazione obbligatori, come descritto nella documentazione dell'API patchDeployments.create. Ad esempio, un deployment di patch con i campi obbligatori minimi (filtro istanza e pianificazione) è simile al seguente. Sostituisci project-id con l'ID progetto.

POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute

{
  "instanceFilter": instance-filter

  // Add one of the following parameters:
  "recurringSchedule": schedule
  "oneTimeSchedule": schedule
}

Sostituisci quanto segue:

  • project-id: l'ID del tuo progetto.
  • instance-filter: i parametri di filtro preferiti. Per ulteriori informazioni sui filtri di istanze, consulta la pagina relativa ai filtri di istanza.
  • schedule: fornisci il parametro oneTimeSchedule o recurringSchedule che descrive in dettaglio i parametri di pianificazione come data, ora e frequenza di esecuzione del job di applicazione patch.

Esempi

Esempio 1: crea una pianificazione una tantum per eseguire un job di applicazione patch il 10 gennaio 2020 alle ore 00:00 UTC su tutte le istanze nelle zone us-west2-b e us-west2-c.

{
 "instanceFilter":{
   "zones":[
     "us-west2-b",
     "us-west2-c"
   ]
 },
 "oneTimeSchedule": {
   "executeTime": "2020-01-10T00:00:00Z"
 }
}

Esempio 2: crea una pianificazione ricorrente per tutte le istanze nelle zone us-west2-b e us-west2-c. La pianificazione ricorrente ha le seguenti specifiche:

  • La data di inizio è 09 gennaio 2019 alle 19:30
  • La data di fine è il 09 gennaio 2020 alle 19:30
  • Il fuso orario da utilizzare è "America/Los_Angeles"
  • Eseguito ogni settimana di un martedì
POST https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments
{
  "instanceFilter":{
    "zones":[
      "us-west2-b",
      "us-west2-c"
    ]
  },
  "recurringSchedule":{
    "frequency":"WEEKLY",
    "weekly":{
      "dayOfWeek":"TUESDAY"
    },
    "timeOfDay":{
      "hours":19,
      "minutes":30
    },
    "timeZone":{
      "id":"America/Los_Angeles"
    },
    "startTime":"2019-09-01T12:00:00Z",
    "endTime":"2020-09-01T12:00:00Z"
  }
}

Elenco dei deployment delle patch

console

  1. Nella console Google Cloud, vai alla pagina Compute Engine > VM Manager > Patch.

    Vai alla pagina Patch

  2. Seleziona la scheda Deployment pianificati.

gcloud

Utilizza il comando os-config patch-deployments list per elencare i deployment delle patch.

gcloud compute os-config patch-deployments list

Questo comando restituisce tutti i deployment delle patch. L'output è simile al seguente:

NAME              LAST_RUN                  NEXT_RUN              FREQUENCY
first-deployment  2019-12-18T00:07:00.738Z  ---                   Once: Scheduled for 2019-12-18T00:07:00.000Z
my-deployment1    2020-01-05T14:00:00.228Z  2020-01-12T14:00:00Z  Recurring - Weekly
my-deployment2    ---                       2020-01-15T05:30:00Z  Recurring - Monthly on specific date(s)

Puoi utilizzare più flag per limitare e formattare la ricerca. Ad esempio, per elencare i primi 10 deployment di patch nelle pagine 2, esegui questo comando. Sostituisci project-id con l'ID progetto.

gcloud compute os-config patch-deployments list --limit 10 --page-size 2

REST

Nell'API, crea una richiesta GET per il metodo patchDeployments.list. Sostituisci project-id con l'ID progetto.

GET https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments

Descrizione del deployment di una patch

console

  1. Nella console Google Cloud, vai alla pagina Compute Engine > VM Manager > Patch.

    Vai alla pagina Patch

  2. Seleziona la scheda Deployment pianificati.
  3. Fai clic sul nome del deployment che vuoi esaminare.

gcloud

Utilizza il comando os-config patch-deployments describe per descrivere il deployment di una patch. Sostituisci patch-deployment-id con il nome del deployment della patch.

gcloud compute os-config patch-deployments describe patch-deployment-id

REST

Nell'API, crea una richiesta GET per il metodo patchDeployments.get.

GET https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments/patch-deployment-id

Sostituisci quanto segue:

  • project-id: l'ID del tuo progetto.
  • patch-deployment-id: nome del deployment delle patch.

Eliminazione del deployment di una patch

console

  1. Nella console Google Cloud, vai alla pagina Compute Engine > VM Manager > Patch.

    Vai alla pagina Patch

  2. Seleziona la scheda Deployment pianificati.
  3. Fai clic sul nome del deployment che vuoi eliminare.
  4. Fai clic su Elimina questa pianificazione.

gcloud

Usa il comando os-config patch-deployments delete per eliminare il deployment di una patch. Sostituisci patch-deployment-id con il nome del deployment della patch.

gcloud compute os-config patch-deployments delete patch-deployment-id

REST

Nell'API, crea una richiesta DELETE per il metodo patchDeployments.delete.

DELETE https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments/patch-deployment-id

Sostituisci quanto segue:

  • project-id: l'ID del tuo progetto.
  • patch-deployment-id: nome del deployment delle patch.

Che cosa succede dopo?