Crea job di applicazione patch

Puoi utilizzare Patch per applicare patch del sistema operativo a un gruppo di istanze di macchine virtuali (VM).

Per applicare le patch alle VM, completa i seguenti passaggi:

  1. Configura la VM.
  2. Esegui un job di applicazione patch.

Prima di iniziare

  • Esamina le quote di OS Config.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi 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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. 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 sull'autenticazione di Google Cloud.

Limitazioni

  • Puoi eseguire il deployment ed eseguire i job di patch solo per le VM di un singolo progetto Google Cloud. Non puoi eseguire job di patch nei progetti Google Cloud, anche se le VM si trovano in un VPC condiviso. Tuttavia, puoi visualizzare i dati sulla conformità alle patch tra i progetti.
  • Per impostazione predefinita, VM Manager non applica patch alle VM che fanno parte di un gruppo di istanze gestite. L'applicazione delle patch a queste VM viene segnalata come errore nel job di applicazione patch. Puoi ignorare questo comportamento predefinito quando crei il job di applicazione patch. Quando applichi patch alle VM che fanno parte di un gruppo di istanze gestite, si applicano le seguenti limitazioni:
    • Quando un gruppo di istanze gestite ripara una VM, la ricrea in base al modello di istanza. Ciò potrebbe ripristinare la VM a uno stato non patchato.
    • L'applicazione di patch alle VM può causare risultati imprevisti in un gruppo di istanze gestite in cui è attivato l'autoscaling. Lo strumento di scalabilità automatica elimina le VM con patch quando il carico diminuisce e crea nuove VM senza patch utilizzando il modello di istanza di MIG quando il carico aumenta. Ad esempio, se l'utilizzo medio della CPU è inferiore all'utilizzo target specificato per la scalabilità automatica, il gruppo di istanze gestite può rimuovere alcune delle VM con patch durante lo scale in.

Sistemi operativi supportati

Per l'elenco completo dei sistemi operativi e delle versioni che supportano la patch, consulta Dettagli del sistema operativo.

Configura la VM

Per utilizzare la funzionalità Patch, completa i seguenti passaggi:

  1. Per tutte le VM, configura VM Manager.
  2. Per le VM Windows, Google consiglia di disattivare gli aggiornamenti automatici sulle VM. In questo modo si riducono i conflitti tra gli aggiornamenti automatici di Windows e il servizio Patch.

Autorizzazioni

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

  • roles/osconfig.patchJobExecutor: contiene le autorizzazioni per eseguire, annullare, recuperare e elencare i job di applicazione patch. Contiene anche le autorizzazioni per visualizzare i dettagli dell'istanza per un job di applicazione patch.
  • roles/osconfig.patchJobViewer: contiene le autorizzazioni per l'accesso di sola lettura per recuperare ed elencare i job di patch. Contiene anche le autorizzazioni per visualizzare i dettagli dell'istanza per un job di applicazione patch.

Ad esempio, per concedere a un utente l'accesso per eseguire job di patch, utilizza il seguente comando:

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

Sostituisci quanto segue:

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

Eseguire job di applicazione patch

Puoi eseguire un job di applicazione patch utilizzando la console Google Cloud, Google Cloud CLI o REST.

Quando esegui un job di applicazione patch, l'applicazione delle patch delle VM inizia contemporaneamente su tutte le istanze specificate dal filtro delle istanze.

Dopo aver avviato un job di applicazione patch, puoi monitorare le patch utilizzando la dashboard Patch. Sono necessari circa 30 minuti dall'avvio di un job di applicazione patch prima che i dati vengano compilati nella dashboard.

Console

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

    Vai alla pagina Patch

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

    Dopo aver selezionato le zone, puoi filtrare ulteriormente le VM all'interno di quella zona.

    Ad esempio, per applicare patch a VM specifiche nelle zone selezionate, inserisci i filtri per nome ed etichetta simili ai seguenti:

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

    1. Specifica un nome per il patch.
    2. Seleziona gli aggiornamenti richiesti per il tuo sistema operativo. Per ulteriori informazioni, consulta la sezione Configurazione delle patch.
  5. Nella sezione Pianificazione, completa quanto segue:

  6. Nella sezione Opzioni di implementazione, configura le opzioni di implementazione delle patch:

    • Scegli se applicare le patch a una zona alla volta o a più zone contemporaneamente.
    • Imposta un budget di interruzione. Un budget di interruzione è il numero o la percentuale di VM in una zona che vuoi che vengano interrotte contemporaneamente dalla procedura 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-jobs execute per eseguire un job di applicazione patch. Sostituisci instance-filter con il filtro delle istanze che preferisci. Per saperne di più sui filtri delle istanze, consulta Filtri delle istanze.

gcloud compute os-config patch-jobs execute instance-filter

Per ulteriori informazioni sugli aggiornamenti che vengono applicati, consulta che cosa è incluso in un job di patch del sistema operativo. Per personalizzare gli aggiornamenti, utilizza i flag facoltativi.

Esempi

Esempio 1 Per eseguire un job di applicazione patch con le seguenti configurazioni:

  • Nome istanza: instance-1
  • Zona: us-east1-b
  • Descrizione: patch for instance-1

    Dovresti eseguire il seguente comando:

gcloud compute os-config patch-jobs execute \
    --instance-filter-names="zones/us-east1-b/instances/instance-1" \
    --description "patch for instance-1"

Esempio 2 Supponiamo che tu voglia eseguire un job di applicazione patch in modo asincrono con le seguenti configurazioni:

  • Il patch deve essere eseguito su tutte le istanze del progetto.
  • Il job di patch deve scadere e interrompersi dopo 1 ora e 30 minuti.
  • Le macchine devono essere riavviate in base alle impostazioni di sistema dopo l'installazione degli aggiornamenti.
  • Nelle VM che eseguono Apt, l'applicazione delle patch viene eseguita utilizzando apt dist-upgrade.
  • Nelle VM con Windows, applica solo le patch per l'KB4339284 aggiornamento.
  • Nelle VM che eseguono Yum, l'applicazione delle patch viene eseguita utilizzando l'utilità yum update-minimal --security.

Dovresti eseguire il seguente comando:

gcloud compute os-config patch-jobs execute \
    --instance-filter-all \
    --duration="1h30m" --reboot-config="DEFAULT" \
    --apt-dist --windows-exclusive-patches=4339284 \
    --yum-minimal --yum-security \
    --async

REST

Nell'API, crea una richiesta POST per eseguire un nuovo job di applicazione patch. Devi definire esplicitamente tutti i campi di configurazione obbligatori come descritto nella documentazione dell'API patchJobs.execute.

Per ulteriori informazioni sugli aggiornamenti che vengono applicati, consulta cosa è incluso in un job di patch del sistema operativo. Per personalizzare gli aggiornamenti, utilizza i parametri PatchConfig.

Ad esempio, un job di applicazione patch con solo i campi obbligatori è simile al seguente.

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

{
  "instanceFilter": instance-filter
}

Sostituisci quanto segue:

  • project-id: l'ID del tuo progetto.
  • instance-filter: i parametri di filtro che preferisci. Per saperne di più sui filtri delle istanze, consulta Filtri delle istanze.

Esempi

Esempio 1 Supponiamo che tu voglia eseguire un job di applicazione patch su un'istanza denominata instance1 situata in us-east1-b. In questo esempio, aggiungiamo una descrizione e specifichiamo che il job viene eseguito per 1 ora e 30 minuti. Sostituisci project-id con l'ID del tuo progetto.

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

{
  "description":"patch instance1 in us-east1-b",
  "duration":"5400s",
  "instanceFilter":{
    "instances":[
      "zones/us-east1-b/instances/instance1"
    ]
  }
}

Esempio 2 Il seguente job di applicazione patch seleziona le VM con le seguenti configurazioni:

  • Avere le etichette env=dev e app=web.
  • Si trovano in asia-east1-b o asia-east1-c.
  • Hanno il prefisso test-.

Nel comando seguente, sostituisci project-id con il tuo ID progetto.

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

{
  "instanceFilter":{
    "groupLabels":[
      {
        "labels":{
          "env":"dev",
          "app":"web"
        }
      }
    ],
    "instanceNamePrefixes":[
      "test-"
    ],
    "zones":[
      "asia-east1-b",
      "asia-east1-c"
    ]
  }
}

Esempio 3

Supponiamo che tu voglia eseguire un job di applicazione patch con le seguenti configurazioni:

  • Il patch deve essere eseguito su tutte le istanze del progetto.
  • Il job di patch deve scadere e interrompersi dopo 1 ora e 30 minuti. L'API richiede che il tempo sia espresso in secondi, quindi impostalo su 5400s.
  • Le macchine devono essere riavviate in base alle impostazioni di sistema dopo l'installazione degli aggiornamenti.
  • Nelle VM che eseguono Apt, l'applicazione delle patch viene eseguita utilizzando apt dist-upgrade.
  • Nelle VM con Windows, applica solo le patch per l'KB4339284 aggiornamento.
  • Nelle VM che eseguono Yum, l'applicazione delle patch viene eseguita utilizzando l'utilità yum update-minimal --security.

Dovresti creare la seguente richiesta:

Nel comando seguente, sostituisci project-id con il tuo ID progetto.

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

{
 "duration":"5400s",
 "instanceFilter":{
   "all":true
 },
 "patchConfig":{
   "rebootConfig":"DEFAULT",
   "apt":{
     "type":"DIST"
   },
   "yum":{
     "security":true,
     "minimal":true
   },
   "windowsUpdate":{
     "exclusivePatches":"4339284"
   }
 }
}

Filtri istanza

Puoi specificare le istanze da includere in un job di applicazione patch utilizzando i filtri. I seguenti filtri sono supportati per i job di patch:

  • Filtra per nome: limita job di applicazione patch alle istanze con nomi specifici. I nomi delle istanze devono essere specificati utilizzando l'URI completo. I formati URI supportati includono:

    • zones/zone/instances/instance-name
    • projects/project-id/zones/zone/instances/instance-name
    • https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name
  • Filtra per prefisso del nome: limita il job di applicazione patch alle istanze con un prefisso specifico nel nome.

  • Filtra per zona: limita il job di applicazione patch alle istanze in una zona specifica.

  • Filtra per etichetta: limita job di applicazione patch alle istanze con etichette specifiche.

Puoi anche eseguire job di patch su tutte le istanze di un progetto Google Cloud impostando il campo all in instanceFilter su true. Per maggiori informazioni, consulta i filtri di esempio per le istanze.

Esempi di filtri delle istanze

Scenario gcloud filter Filtro API
Tutte le istanze di un progetto Google Cloud
--instance-filter-all
{
  "instanceFilter":{
    "all":"true"
  }
}
Un'istanza con il nome instance1 che si trova nella zona us-east1-b.
--instance-filter-names="zones/us-east1-b/instances/instance1"
{
  "instanceFilter":{
    "instances":[
      "zones/us-east1-b/instances/instance1"
    ]
  }
}
Istanze con il prefisso app-
--instance-filter-name-prefixes="app-"
{
  "instanceFilter":{
    "instanceNamePrefixes":[
      "app-"
    ]
  }
}
Istanze nelle zone us-east1-b o us-east1-c
--instance-filter-zones="us-east1-b","us-east1-c"
{
  "instanceFilter":{
    "zones":[
      "us-east1-b",
      "us-east1-c"
    ]
  }
}
Istanze con l'etichetta della combinazione di env=dev e app=web nonché le istanze con env=dev e app=worker.
--instance-filter-group-labels="env=dev,app=web"
--instance-filter-group-labels="env=dev,app=worker"
{
  "instanceFilter":{
    "groupLabels":[
      {
        "labels":{
          "env":"dev",
          "app":"web"
        }
      },
      {
        "labels":{
          "env":"dev",
          "app":"worker"
        }
      }
    ]
  }
}

Combinare i filtri delle istanze

I filtri delle istanze possono anche essere combinati. Ad esempio, per eseguire un job di applicazione patch per le istanze con il prefisso test-, che si trovano nella zona us-east1-c e che hanno le etichette env=dev e app=web, esegui il seguente comando:

gcloud compute os-config patch-jobs execute \
    --instance-filter-name-prefixes="test-" \
    --instance-filter-zones="us-east1-c" \
    --instance-filter-group-labels="env=prod,app=web"

Configurazione della patch

Quando esegui un job di applicazione patch, puoi specificare i parametri per controllare le patch che vengono applicate alla VM. I parametri di configurazione della patch dipendono dalla piattaforma e vengono spesso trasmessi agli strumenti di aggiornamento di sistema sottostanti. I patch effettivi provengono dai repository dei pacchetti (Linux) o dal server Windows Update (Windows) configurato sulla VM.

Puoi specificare le seguenti configurazioni di patch per le tue VM:

  • Per Windows, specifica la classificazione delle patch da applicare (ad es. Security e Critical) o scegli come target KB specifiche da escludere. Per ulteriori informazioni sulla classificazione delle patch, consulta la documentazione dell'assistenza Microsoft.
  • Per RHEL, Rocky Linux e CentOS, il sistema sottostante è yum.

    • Per le patch destinate alle VM RHEL e Rocky Linux, puoi specificare i pacchetti security e minimal.
    • Per le VM CentOS, non sono presenti metadati security nel repository yum CentOS. Pertanto, non è necessario specificare l'opzione security durante l'aggiornamento dei pacchetti di sicurezza. Se non specifichi alcun pacchetto, il job di applicazione patch aggiorna tutti i pacchetti, inclusi quelli con aggiornamenti della sicurezza.
    • Puoi anche escludere pacchetti specifici. Per ulteriori informazioni, consulta le pagine man di yum.
  • Per Debian e Ubuntu, il sistema sottostante è apt. Per le patch che hanno come target queste VM, puoi specificare dist-upgrade o un upgrade standard. Puoi anche escludere pacchetti specifici. Per ulteriori informazioni, consulta le pagine man di Debian o le pagine man di Ubuntu.

  • Per SuSE, il sistema sottostante è zypper, in particolare con patch Zypper. Per i patch che hanno come target queste VM, puoi specificare opzioni quali:

    • with update: aggiorna tutti i pacchetti non coperti dalle patch
    • with optional: le patch facoltative vengono trattate in base alle esigenze
    • Le categorie o le gravità delle patch da applicare

    Puoi anche escludere patch specifiche.

Se vuoi, per tutti i sistemi operativi supportati puoi scegliere di installare solo le patch approvate specificando questi aggiornamenti. In questo modo puoi inserire un elenco di patch o pacchetti approvati. Quando selezioni queste patch approvate, vengono installati solo i pacchetti o le patch approvati. Tutti gli altri parametri di configurazione delle patch vengono ignorati durante l'aggiornamento.

Esempi

Console

  1. Segui i passaggi descritti nella scheda della console per creare un job di patch o un deployment delle patch.
  2. Nella sezione Configurazione patch, seleziona i parametri per il job di applicazione patch.
  3. Apporta le configurazioni aggiuntive necessarie per il job di applicazione patch o per il deployment.
  4. Fai clic su Esegui il deployment.

gcloud

Ad esempio, per eseguire un job di applicazione patch su tutte le istanze della zonanorthamerica-northeast1-a con configurazioni di patch specifiche per diversi sistemi operativi, esegui il comando gcloud compute os-config patch-jobs execute:

gcloud compute os-config patch-jobs execute \
    --instance-filter-zones="northamerica-northeast1-a" \
    --apt-dist \
    --yum-security \
    --yum-minimal \
    --zypper-categories=security \
    --windows-classifications=critical,security \
    --reboot-config=default

Per scoprire di più sulle opzioni supportate, esegui il seguente comando:

gcloud compute os-config patch-jobs execute --help

REST

Ad esempio, per eseguire un job di applicazione patch su tutte le istanze della zonanorthamerica-northeast1-a con configurazioni di patch specifiche per diversi sistemi operativi, esegui il seguente comando:

POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute
{
    "instanceFilter":{
        "zones":[
            "northamerica-northeast1-a"
        ]
    },
    "patchConfig":{
        "apt": {
            "type": "dist-upgrade"
        },
        "yum": {
            "security": true,
            "minimal": true
        },
        "zypper": {
            "categories": ["security"]
        },
        "windowsUpdate": {
            "classifications": ["CRITICAL", "SECURITY"]
        },
        "rebootConfig": "DEFAULT"
    }
}

Per scoprire di più sui parametri supportati, consulta la documentazione di PatchConfig API.

Periodo di manutenzione

Un periodo di manutenzione è la durata totale durante la quale consenti l'esecuzione di un job di applicazione patch. I job di patch avranno un timeout se non vengono completati entro il periodo di manutenzione specificato.

Ad esempio, se imposti una periodo di manutenzione di 60 minutes, non verranno avviati nuovi job di patch 60 minuti dopo l'ora di inizio. Alcune procedure, come il download di un file o il riavvio, potrebbero verificarsi al di fuori di questa periodo di manutenzione, ma non verranno avviati nuovi job di applicazione patch.

Opzioni di riavvio

Quando esegui un job di applicazione patch, puoi specificare le opzioni di riavvio per la patch. Sono disponibili le seguenti opzioni:

  • Valore predefinito: l'agente decide se è necessario il riavvio controllando i segnali noti su ciascun sistema operativo. Durante l'applicazione delle patch potrebbero verificarsi più riavvii, anche prima dell'installazione delle patch.
  • Sempre: la macchina si riavvia al termine dell'aggiornamento.
  • Mai: la macchina non si riavvia al termine dell'aggiornamento. In alcuni casi, ciò potrebbe significare che non tutte le patch sono state applicate completamente.

Script pre-applicazione e post-applicazione

Quando esegui un job di applicazione patch, puoi specificare gli script da eseguire nell'ambito della procedura di applicazione dei patch. Questi script sono utili per eseguire attività come l'arresto di un'applicazione e i controlli di integrità.

  • Lo script pre-applicazione viene eseguito prima dell'inizio dell'applicazione di patch. Se è richiesto un riavvio di sistema prima di iniziare l'applicazione di patch, lo script pre-applicazione viene eseguito prima del riavvio.
  • Gli script post-applicazione vengono eseguiti dopo il completamento dell'applicazione di patch. Se è richiesto un riavvio di sistema durante l'applicazione di patch, lo script post-applicazione viene eseguito dopo il riavvio.

Un job di applicazione patch accetta uno script pre-applicazione e uno post-applicazione per Linux e uno script pre-applicazione e uno post-applicazione per Windows. Gli script per Linux e Windows devono essere forniti utilizzando i flag, i parametri o le sezioni appropriati, se specificati, rispettivamente da Google Cloud CLI, REST o dalla console Google Cloud. Gli script Linux vengono eseguiti solo su VM Linux e gli script Windows solo su VM Windows.

Questi file di script possono essere archiviati nella VM o in un bucket Cloud Storage con versioni. Se l'oggetto Cloud Storage non è leggibile pubblicamente, assicurati che il service account Compute Engine predefinito per il progetto Google Cloud disponga delle autorizzazioni IAM necessarie per leggere gli oggetti Cloud Storage. Per assicurarti di disporre delle autorizzazioni corrette, controlla le impostazioni di autorizzazione nell'oggetto Cloud Storage.

Se vuoi utilizzare un bucket Cloud Storage per archiviare i tuoi script, crea un bucket Cloud Storage e carica i tuoi script al suo interno.

Esempi

Console

  1. Segui i passaggi descritti nella scheda della console per creare un job di patch o un deployment delle patch.
  2. Nella sezione Opzioni avanzate, fai clic su Sfoglia sia per le sezioni pre-patch che post-patch. Viene visualizzata una pagina dell'oggetto Cloud Storage.
  3. Nella pagina dell'oggetto Cloud Storage, seleziona il bucket Cloud Storage che contiene lo script, quindi seleziona l'oggetto o il file Cloud Storage.
  4. Apporta le configurazioni aggiuntive necessarie per il job di applicazione patch o per il deployment.
  5. Fai clic su Esegui il deployment.

gcloud

Ad esempio, per eseguire un job di applicazione patch su tutte le istanze nella zonanorthamerica-northeast1-a con script di pre e post patch per le istanze Linux e Windows, esegui il seguente comando:

gcloud compute os-config patch-jobs execute \
    --instance-filter-zones="northamerica-northeast1-a" \
    --async \
    --pre-patch-linux-executable="/tmp/pre_patch_script.sh" \
    --post-patch-linux-executable="gs://my-patch-scripts/linux/post_patch_script#1523477886880" \
    --pre-patch-windows-executable="C:\\Users\\user\\pre-patch-script.cmd" \
    --post-patch-windows-executable="gs://my-patch-scripts/windows/post_patch_script.ps1#135920493447"

Per scoprire di più sui formati file accettabili, esegui il seguente comando:

gcloud compute os-config patch-jobs execute --help

REST

Ad esempio, per eseguire un job di applicazione patch su tutte le istanze nella zonanorthamerica-northeast1-a con script di pre e post patch per le istanze Linux e Windows, esegui il seguente comando:

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

{
  "instanceFilter":{
    "zones":[
      "northamerica-northeast1-a"
    ]
  },
  "patchConfig":{
    "preStep":{
      "linuxExecStepConfig":{
        "localPath":"/tmp/pre_patch_script.sh"
      },
      "windowsExecStepConfig":{
        "interpreter":"SHELL",
        "localPath":"C:\\Users\\user\\pre-patch-script.cmd"
      }
    },
    "postStep":{
      "linuxExecStepConfig":{
        "gcsObject":{
          "bucket":"my-patch-scripts",
          "generationNumber":"1523477886880",
          "object":"linux/post_patch_script"
        }
      },
      "windowsExecStepConfig":{
        "gcsObject":{
          "bucket":"my-patch-scripts",
          "generationNumber":"135920493447",
          "object":"windows/post_patch_script.ps1"
        },
        "interpreter":"POWERSHELL"
      }
    }
  }
}

Per saperne di più sui formati file accettabili, consulta la sezione ExecStepConfig della documentazione dell'API PatchConfig.

Opzioni di implementazione delle patch

Puoi scegliere di applicare le patch alle VM una zona alla volta (zona per zona) o a tutte le zone contemporaneamente (zone concorrenti).

Oltre a effettuare una selezione per l'implementazione della zona, puoi anche specificare un budget per l'interruzione della zona per le tue VM.

Budget per interruzione zona

Un budget di interruzione è il numero massimo (o la percentuale) di VM per zona da interrompere in un determinato momento.

Che cosa viene considerata una VM interrotta?

Durante l'applicazione dei patch, una VM è considerata interrotta dal momento in cui l'agente OS Config viene informato dell'inizio fino al completamento dell'applicazione dei patch. Questo tempo di interruzione include il tempo necessario per completare il riavvio ed eventuali passaggi post-patch.

Una VM viene conteggiata anche come parte del budget per le interruzioni se soddisfa una delle seguenti condizioni:

  • L'operazione di applicazione delle patch non riesce
  • L'operazione di applicazione di patch non riesce quando vengono eseguiti i passaggi precedenti o successivi alla patch
  • L'operazione di applicazione di patch non risponde con una notifica di successo prima del tempo di spegnimento

Come funzionano i budget per le interruzioni

Per gli implementazioni zona per zona, se il budget per le interruzioni in una zona viene superato, il job di applicazione patch si arresta. Questo accade perché per passare alla zona successiva è necessario completare il processo di applicazione del patch nella zona precedente.

Ad esempio, se il budget per le interruzioni ha un valore pari a 10 e non è possibile applicare la patch a 8 VM nella zona corrente, il job di applicazione patch continua ad applicare la patch a 2 VM alla volta fino al completamento della zona. Al termine della zona, l'applicazione del patch inizia con 10 VM alla volta nella zona successiva. Se l'applicazione della patch non riesce su 10 VM nella zona successiva, il job di applicazione patch si arresta.

Esempi

Console

  1. Segui i passaggi descritti nella scheda della console per creare un job di patch o un deployment delle patch.
  2. Nella sezione Opzioni di implementazione, configura le opzioni di implementazione:
    • Scegli se applicare la patch a una zona alla volta o a tutte le zone contemporaneamente.
    • Imposta il budget di interruzione. Un budget di interruzione è il numero o la percentuale di VM in una zona che vuoi che vengano interrotte contemporaneamente dalla procedura di applicazione delle patch.
  3. Apporta le configurazioni aggiuntive necessarie per il job di applicazione patch o per il deployment.
  4. Fai clic su Esegui il deployment.

gcloud

Esempio 1

Questo esempio mostra il comando os-config patch-jobs execute per l'esecuzione di un job di applicazione patch con le seguenti specifiche:

  • Applicazione di patch a tutte le VM del progetto
  • Applicazione di patch alle VM zona per zona
  • Garantire che non più di 10 VM nella stessa zona vengano interrotte in un determinato momento
gcloud compute os-config patch-jobs execute \
   --instance-filter-all \
   --rollout-mode=zone-by-zone \
   --rollout-disruption-budget=10

Esempio 2

Questo esempio mostra il comando os-config patch-jobs execute per l'esecuzione di un job di applicazione patch con le seguenti specifiche:

  • Applicazione di patch a tutte le VM del progetto
  • Applicazione di patch alle zone contemporaneamente
  • Garantire che non più del 50% delle VM nella stessa zona siainterrotta in un determinato momento
gcloud compute os-config patch-jobs execute \
   --instance-filter-all \
   --rollout-mode=concurrent-zones \
   --rollout-disruption-budget-percent=50

REST

Questo esempio mostra il metodo patchJobs.execute per eseguire un job di applicazione patch con le seguenti specifiche:

  • Applicazione di patch a tutte le VM nelle zone us-central1-a, us-central1-c e us-central1-f
  • Applicazione di patch alle zone contemporaneamente
  • Garantire che non più del 25% delle istanze nella stessa zona sia interrotto in un determinato momento
POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute

{
  "instanceFilter":{
    "zones":[
      "us-central1-a",
      "us-central1-c",
      "us-central1-f"
    ]
  },
  "rollout": {
    "disruptionBudget": {
      "percent": 25
    },
    "mode": "CONCURRENT_ZONES"
  }
}

Per saperne di più sull'implementazione delle patch, consulta la documentazione dell'API PatchRollout.

Attivare la correzione del software Microsoft sulle VM Windows

Quando esegui un job di applicazione patch su VM Windows, per impostazione predefinita Patch applica solo le patch per il sistema operativo Windows.

Quando esegui un job di applicazione patch, puoi applicare gli aggiornamenti per il software Microsoft, come Microsoft SQL Server, SharePoint Server o .NET Framework, in esecuzione sulle VM Windows. Per impostazione predefinita, l'applicazione di patch a queste applicazioni è disattivata per evitare interruzioni del servizio e separare gli aggiornamenti pianificati per questi software. Per attivare la correzione automatica del software Microsoft, puoi utilizzare l'interfaccia utente di Windows o PowerShell.

Interfaccia utente di Windows

  1. Nel menu Start di Windows, seleziona Impostazioni > Aggiornamento e sicurezza > Windows Update.
  2. Nella sezione Opzioni avanzate, attiva l'opzione Ricevi aggiornamenti per altri prodotti Microsoft quando aggiorni Windows.

PowerShell

 $service_manager = New-Object -ComObject 'Microsoft.Update.ServiceManager'
 $service_manager.AddService2("7971f918-a847-4430-9279-4a52d1efe18d",7,"")

Eseguire il debug di un job di applicazione patch

Se il patch non va a buon fine, puoi utilizzare i passaggi che seguono per trovare e risolvere i problemi.

  1. Esamina i dettagli dell'istanza per il job di applicazione patch interessato. In questo modo puoi identificare le istanze che non sono andate a buon fine o lo stato in cui sono bloccate. L'elenco dei dettagli dell'istanza contiene anche un breve messaggio di errore per ogni istanza.

    Se l'applicazione di una patch non va a buon fine con stato NO_AGENT_DETECTED o TIMED_OUT, in genere significa che il servizio ha inviato una richiesta all'agente per iniziare l'applicazione della patch, ma non ha ricevuto risposta dall'agente. Esamina le seguenti possibili cause e soluzioni:

    • L'istanza non è in esecuzione. Per risolvere il problema, avvia l'istanza VM.
    • Verifica la configurazione utilizzando l'elenco di controllo per la verifica.
    • Le impostazioni di rete della rete VPC o dell'istanza non consentivano all'agente di configurazione del sistema operativo di comunicare con l'API OS Config. Per risolvere il problema, controlla le impostazioni di rete.
  2. Se i dettagli dell'istanza non forniscono informazioni sufficienti, esamina i log di Cloud Logging o la console della porta seriale. L'agente OS Config scrive le voci di log in entrambe le posizioni. In Cloud Logging, puoi filtrare utilizzando l'ID job di applicazione patch per visualizzare tutte le voci di log relative al job di applicazione patch. Puoi anche attivare il logging di debug impostando il osconfig-log-level=debug valore del metadato a livello di VM o progetto Google Cloud.

Passaggi successivi