Patch-Jobs erstellen

Sie können mit OS Patch Management Betriebssystem-Patches auf eine Gruppe von VM-Instanzen anwenden.

Führen Sie die folgenden Schritte aus, um Patches auf Ihre VMs anzuwenden:

  1. Richten Sie Ihre VM ein.
  2. Führen Sie einen Patch-Job aus.

Hinweis

Beschränkungen

  • OS Patch Management kann nur für VMs in einem einzelnen Google Cloud-Projekt eingerichtet werden. Sie können OS Patch Management nicht für Cloud-Projekte einrichten, auch wenn sich die VMs in einer freigegebenen VPC befinden.
  • OS Patch Management wird für verwaltete Instanzgruppen (Managed Instance Groups, MIGs) nicht unterstützt. Informationen zum Verwalten von Updates für Ihre MIGs finden Sie unter Aktualisierungen für MIGs einführen.

Unterstützte Betriebssysteme

Eine vollständige Liste der Betriebssysteme und Versionen, die OS Patch Management unterstützen, finden Sie unter Details zu Betriebssystemen.

VM einrichten

Führen Sie die folgenden Schritte aus, um den OS Patch Management-Dienst zu verwenden:

  1. Richten Sie für alle VMs VM-Manager ein.
  2. Google empfiehlt für Windows-VMs, die automatische Aktualisierung von VMs zu deaktivieren. Dadurch werden Konflikte zwischen den automatischen Windows-Updates und dem OS Patch Management-Dienst verringert.

Berechtigungen

Die Inhaber eines Cloud Projekts haben uneingeschränkten Zugriff auf die Ausführung und Verwaltung von Patch-Jobs. Für alle anderen Nutzer müssen Sie Berechtigungen erteilen. Dafür können Sie eine dieser detaillierten Rollen zuweisen:

  • roles/osconfig.patchJobExecutor: Enthält Berechtigungen zum Ausführen, Abbrechen, Abrufen und Auflisten von Patch-Jobs. Enthält auch Berechtigungen zum Anzeigen von Instanzdetails für einen Patch-Job.
  • roles/osconfig.patchJobViewer: Enthält Berechtigungen für den Lesezugriff zum Abrufen und Auflisten von Patch-Jobs. Enthält auch Berechtigungen zum Anzeigen von Instanzdetails für einen Patch-Job.

Verwenden Sie beispielsweise den folgenden Befehl, um einem Nutzer Zugriff zum Ausführen von Patch-Jobs zu gewähren:

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

Dabei gilt:

  • project-id: die Projekt-ID
  • user-id: der Google Workspace-Nutzername des Nutzers

Patch-Jobs ausführen

Sie können einen Patch-Job mit der Google Cloud Console, dem gcloud-Befehlszeilentool oder der Cloud OS Config API ausführen.

Wenn Sie einen Patch-Job ausführen, wird das Patching der VMs gleichzeitig für alle Instanzen gestartet, die durch den Instanzfilter festgelegt wurden.

Nachdem Sie einen Patch-Job gestartet haben, können Sie Ihre Patches im OS Patch Management-Dashboard beobachten. Wenn ein Patch-Job gestartet wurde, dauert es etwa 30 Minuten, bis die Daten im Dashboard erscheinen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Compute Engine > VM Manager > OS Patch Management auf.

    Zur Seite „OS Patch Management“

  2. Klicken Sie auf Neues Patch-Deployment.
  3. Wählen Sie im Bereich Ziel-VMs die Zone mit den VMs aus, die Sie patchen möchten. Sie können auch alle Zonen auswählen.

    Nachdem Sie die Zonen ausgewählt haben, können Sie die VMs innerhalb dieser Zone weiter filtern.

    So führen Sie beispielsweise einen Patch-Job für VMs aus, die sich in asia-east1-c und asia-east2-b befinden und die folgenden Filter haben:

    • Namenspräfix: test-
    • Labels: env=dev und app=web

    Ihre Auswahl sieht in etwa so aus:

    OS Patch Management-Seite mit Anzeige der Instanzfilter

  4. Konfigurieren Sie den Patch im Abschnitt Patchkonfiguration.

    1. Geben Sie einen Namen für den Patch an.
    2. Wählen Sie die erforderlichen Updates für das Betriebssystem aus. Weitere Informationen finden Sie unter Patch-Konfiguration.
  5. Führen Sie im Bereich Planung folgende Schritte aus:

    • Wählen Sie einen Zeitplan aus. Wählen Sie Jetzt starten aus, um den Patch-Job sofort auszuführen.
    • Optional: Legen Sie eine Dauer oder ein Wartungsfenster fest.
  6. Konfigurieren Sie im Abschnitt Patch rollout options die Rollout-Optionen:

    • Wählen Sie aus, ob eine Zone nach der anderen oder Zonen gleichzeitig gepatcht werden sollen.
    • Legen Sie ein Unterbrechungsbudget fest. Ein Unterbrechungsbudget ist die Anzahl oder der Prozentsatz von VMs in einer Zone, die gleichzeitig durch den Patch-Prozess unterbrochen werden sollen.
  7. Optional: Im Abschnitt Erweiterte Optionen können Sie die folgenden Aufgaben ausführen:

  8. Klicken Sie auf Bereitstellen.

gcloud

Verwenden Sie den Befehl os-config patch-jobs execute, um einen Patch-Job auszuführen. Ersetzen Sie dabei instance-filter durch den gewünschten Instanzfilter. Weitere Informationen zu Instanzfiltern finden Sie unter Instanzfilter.

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

Weitere Informationen dazu, welche Aktualisierungen angewendet werden, finden Sie unter Was ist in einem OS-Patch-Job enthalten. Verwenden Sie zum Anpassen Ihrer Updates die optionalen Flags.

Beispiele

Beispiel 1: So führen sie einen Patch-Job mit den folgenden Konfigurationen aus:

  • Instanzname: instance-1
  • Zone: us-east1-b
  • Beschreibung: patch for instance-1

    Der gesamte Befehl sieht so aus:

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

Beispiel 2: Angenommen, Sie möchten einen Patch-Job asynchron mit den folgenden Konfigurationen ausführen:

  • Der Patch soll auf allen Instanzen im Projekt ausgeführt werden.
  • Der Patch-Job soll ein Zeitlimit haben und nach 1 Stunde und 30 Minuten stoppen.
  • Die Maschinen sollen nach der Installation der Updates gemäß den Systemeinstellungen neu gestartet werden.
  • Auf VMs, auf denen Apt ausgeführt wird, soll das Patching mit apt dist-upgrade erfolgen.
  • Auf VMs, auf denen Windows ausgeführt wird, sollen nur Patches für das KB4339284-Update angewendet werden.
  • Auf VMs, auf denen Yum ausgeführt wird, soll das Patching mit dem Dienstprogramm yum update-minimal --security erfolgen.

Der gesamte Befehl sieht so aus:

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

API

Erstellen Sie in der API eine POST-Anfrage, um einen neuen Patch-Job auszuführen. Sie müssen alle erforderlichen Konfigurationsfelder, wie in der API-Dokumentation patchJobs.execute beschrieben, explizit definieren.

Weitere Informationen dazu, welche Aktualisierungen angewendet werden, finden Sie unter Dies beinhaltet ein Betriebssystem-Patch-Job. Verwenden Sie zum Anpassen Ihrer Aktualisierungen die PatchConfig-Parameter.

Ein Patch-Job nur mit den erforderlichen Feldern sieht beispielsweise so aus:

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

{
  "instanceFilter": instance-filter
}

Dabei gilt:

  • project-id: Ihre Projekt-ID.
  • instance-filter sind die gewünschten Filterparameter. Weitere Informationen zu Instanzfiltern finden Sie unter Instanzfilter.

Beispiele

Beispiel 1: Angenommen, Sie möchten einen Patch-Job auf einer Instanz namens instance1 in us-east1-b ausführen. In diesem Beispiel fügen wir eine Beschreibung hinzu und geben an, dass der Job 1 Stunde und 30 Minuten lang ausgeführt wird. Ersetzen Sie dabei project-id durch Ihre Projekt-ID.

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"
    ]
  }
}

Beispiel 2: Mit dem folgenden Patch-Job werden VMs mit den folgenden Konfigurationen ausgewählt:

  • Verwenden Sie die Labels env=dev und app=web.
  • Sie sind entweder in asia-east1-b oder asia-east1-c.
  • Verwenden Sie das Präfix test-.

Ersetzen Sie im folgenden Befehl project-id durch Ihre Projekt-ID:

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"
    ]
  }
}

Beispiel 3:

Angenommen, Sie möchten einen Patch-Job mit den folgenden Konfigurationen ausführen:

  • Der Patch soll auf allen Instanzen im Projekt ausgeführt werden.
  • Der Patch-Job soll ein Zeitlimit haben und nach 1 Stunde und 30 Minuten stoppen. Die API erfordert, dass die Zeit in Sekunden angegeben wird. Legen Sie diesen Wert also auf 5.400 s fest.
  • Die Maschinen sollen nach der Installation der Updates gemäß den Systemeinstellungen neu gestartet werden.
  • Auf VMs, auf denen Apt ausgeführt wird, soll das Patching mit apt dist-upgrade erfolgen.
  • Auf VMs, auf denen Windows ausgeführt wird, sollen nur Patches für das KB4339284-Update angewendet werden.
  • Auf VMs, auf denen Yum ausgeführt wird, soll das Patching mit dem Dienstprogramm yum update-minimal --security erfolgen.

Sie würden die nachfolgende Anfrage stellen.

Ersetzen Sie im folgenden Befehl project-id durch Ihre Projekt-ID:

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"
   }
 }
}

Instanzfilter

Sie können mit Filtern angeben, welche Instanzen in einem Patch-Job enthalten sein sollen. Die folgenden Filter werden für Patch.Jobs unterstützt:

  • Nach Name filtern: Beschränkt den Patch-Job auf Instanzen mit bestimmten Namen. Instanznamen müssen mit dem vollständigen URI angegeben werden. Folgende URI-Formate werden unterstützt:

    • 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
  • Nach Namenspräfix filtern: Beschränkt den Patch-Job auf Instanzen mit einem bestimmten Präfix im Namen.

  • Nach Zone filtern: Beschränkt den Patch-Job auf Instanzen in einer bestimmten Zone.

  • Nach Label filtern: Beschränkt den Patch-Job auf Instanzen mit bestimmten Labels.

Sie können Patch-Jobs auch auf allen Instanzen in einem Cloud-Projekt ausführen. Setzen Sie dazu das Feld all in instanceFilter auf true. Weitere Informationen finden Sie unter Beispiele für Instanzfilter.

Beispiele für Instanzfilter

Szenario gcloud-Filter API-Filter
Alle Instanzen in einem Cloud-Projekt

--instance-filter-all

{
  "instanceFilter":{
    "all":"true"
  }
}
Eine Instanz mit dem Namen instance1, die sich in der Zone us-east1-b befindet.

--instance-filter-names="zones/us-east1-b/instances/instance1"

{
  "instanceFilter":{
    "instances":[
      "zones/us-east1-b/instances/instance1"
    ]
  }
}
Instanzen mit dem Präfix app-

--instance-filter-name-prefixes="app-"

{
  "instanceFilter":{
    "instanceNamePrefixes":[
      "app-"
    ]
  }
}
Instanzen in den Zonen us-east1-b oder us-east1-c

--instance-filter-zones="us-east1-b","us-east1-c"

{
  "instanceFilter":{
    "zones":[
      "us-east1-b",
      "us-east1-c"
    ]
  }
}
Instanzen mit dem Kombinationslabel env=dev und app=web sowie Instanzen mit env=dev und 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"
        }
      }
    ]
  }
}

Instanzfilter kombinieren

Instanzfilter können auch kombiniert werden. Wenn Sie beispielsweise einen Patch-Job für Instanzen mit dem Präfix test-, die sich in der Zone us-east1-c befinden und die Labels env=dev und app=web enthalten, ausführen möchten, führen Sie den folgenden Befehl aus:

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"

Patchkonfiguration

Beim Ausführen eines Patch-Jobs können Sie Parameter angeben, um die Patches zu steuern, die auf die VM angewendet werden. Die Patch-Konfigurationsparameter sind plattformabhängig und werden häufig an die zugrunde liegenden Systemupdate-Tools übergeben. Die eigentlichen Patches stammen aus den Package Repositories (Linux) oder dem Windows Update-Server (Windows), der auf der VM konfiguriert ist.

Sie können die folgenden Patch-Konfigurationen für Ihre VMs angeben:

  • Unter Windows geben Sie die Klassifizierung der anzuwendenden Patches an (z. B. Security und Critical) oder zielen auf bestimmte KBs ab, die ausgeschlossen werden sollen. Weitere Informationen zur Patch-Klassifizierung finden Sie in der Dokumentation zu Microsoft-Support.
  • Für RHEL und CentOS ist das zugrunde liegende System yum. Für Patches, die auf diese VMs abzielen, können Sie security- und minimal-Pakete angeben. Sie können auch bestimmte Pakete ausschließen. Weitere Informationen finden Sie auf den yum-man-Seiten.
  • Für Debian und Ubuntu ist das zugrunde liegende System apt. Für Patches, die auf diese VMs abzielen, können Sie dist-upgrade oder ein Standardupgrade angeben. Sie können auch bestimmte Pakete ausschließen. Weitere Informationen finden Sie auf den Debian-man-Seiten und den Ubuntu-man-Seiten.
  • Für SuSE ist das zugrunde liegende System zypper. Dabei werden insbesondere Zypper-Patches verwendet. Für Patches, die auf diese VMs abzielen, können Sie z. B. folgende Optionen angeben:

    • with update: Alle Pakete, die nicht von Patches abgedeckt werden, werden aktualisiert
    • with optional: Optionale Patches werden nach Bedarf behandelt
    • Die Kategorien oder Schweregrade der anzuwendenden Patches

    Sie können auch bestimmte Patches ausschließen.

Optional können Sie für alle unterstützten Betriebssysteme festlegen, dass genehmigte Patches nur durch Angabe dieser Updates installiert werden. So können Sie eine Liste genehmigter Pakete oder Patches eingeben. Wenn Sie diese genehmigten Patches auswählen, werden nur die genehmigten Pakete oder Patches installiert. Alle anderen Patch-Konfigurationsparameter werden während des Updates übersprungen.

Beispiele

Console

  1. Führen Sie die auf dem Tab „Console“ aufgeführten Schritte aus, um entweder einen Patch-Job oder ein Patch-Deployment zu erstellen.
  2. Wählen Sie im Abschnitt Patchkonfiguration die Parameter für den Patch-Job aus.

    Bild: Betriebssystem-Patch-Konfiguration mit Eingabefeldern

  3. Nehmen Sie zusätzliche Konfigurationen vor, die für Ihren Patch-Job oder Ihr Deployment erforderlich sind.

  4. Klicken Sie auf Bereitstellen.

gcloud

Wenn Sie beispielsweise einen Patch-Job auf allen Instanzen in der Zone northamerica-northeast1-a mit bestimmten Patch-Konfigurationen für verschiedene Betriebssysteme ausführen möchten, führen Sie den Befehl gcloud compute os-config patch-jobs execute aus:

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

Führen Sie den folgenden Befehl aus, um mehr über die unterstützten Optionen zu erfahren:

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

API

Wenn Sie beispielsweise einen Patch-Job auf allen Instanzen in der Zone northamerica-northeast1-a mit bestimmten Patch-Konfigurationen für verschiedene Betriebssysteme ausführen möchten, führen Sie den folgenden Befehl aus:

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"
    }
}

Weitere Informationen zu den unterstützten Parametern finden Sie in der Dokumentation zu PatchConfig API.

Wartungsfenster

Ein Wartungsfenster ist die Gesamtdauer, während der ein Patch-Job ausgeführt werden kann. Patch-Jobs führen zu einer Zeitüberschreitung, wenn sie nicht innerhalb des angegebenen Wartungsfensters abgeschlossen werden.

Wenn Sie beispielsweise ein Wartungsfenster von 60 minutes festlegen, werden 60 Minuten nach der Startzeit keine neuen Patch-Jobs initiiert. Einige Prozesse wie das Herunterladen einer Datei oder ein Neustart können außerhalb dieses Wartungsfensters stattfinden, es werden jedoch keine neuen Patch-Jobs initiiert.

Neustartoptionen

Beim Ausführen eines Patch-Jobs können Sie die Neustartoptionen für den Patch angeben. Folgende Optionen sind verfügbar:

  • Standardeinstellung: Der Agent entscheidet, ob ein Neustart erforderlich ist. Dazu werden bekannte Signale in jedem Betriebssystem geprüft. Während des Patchings können mehrere Neustarts erfolgen, bevor Patches installiert werden.
  • Immer: Der Computer wird nach Abschluss des Updates neu gestartet.
  • Nie: Der Computer wird nach Abschluss des Updates nicht neu gestartet. In einigen Fällen bedeutet dies, dass nicht alle Patches vollständig angewendet werden.

Pre-Patch- und Post-Patch-Skripts

Beim Ausführen eines Patch-Jobs können Sie festlegen, dass Skripts als Teil des Patching-Prozesses ausgeführt werden. Diese Skripts sind nützlich für Aufgaben wie das Herunterfahren einer Anwendung sowie für Systemdiagnosen.

  • Pre-Patch-Skripts werden vor dem Patching ausgeführt. Muss das System vor Beginn des Patchings neu gestartet werden, wird das Pre-Patch-Skript vor dem Neustart ausgeführt.
  • Post-Patch-Skripts werden nach dem Patching ausgeführt. Muss das System während des Patchings neu gestartet werden, wird das Post-Patch-Skript nach dem Neustart ausgeführt.

Ein Patch-Job akzeptiert ein Pre-Patch- und ein Post-Patch-Skript für Linux sowie ein Pre-Patch- und ein Post-Patch-Skript für Windows. Linux- und Windows-Skripts müssen mit den entsprechenden Flags, Parametern oder Abschnitten bereitgestellt werden, wenn sie über das gcloud-Befehlszeilentool, die Cloud OS Config API oder die Google Cloud Console angegeben werden. Linux-Skripts werden nur auf Linux-VMs und Windows-Skripts nur auf Windows-VMs ausgeführt.

Diese Skriptdateien können entweder auf der VM oder in einem versionierten Cloud Storage-Bucket gespeichert werden. Wenn Ihr Cloud Storage-Objekt nicht öffentlich lesbar ist, prüfen Sie, ob das Compute Engine-Standarddienstkonto für das Cloud-Projekt die erforderlichen IAM-Berechtigungen zum Lesen von Cloud Storage-Objekten hat. Prüfen Sie die Berechtigungseinstellungen für das Cloud Storage-Objekt, um zu gewährleisten, dass Sie die richtigen Berechtigungen haben.

Wenn Sie Ihre Skripts in einem Cloud Storage-Bucket speichern möchten, erstellen Sie einen Cloud Storage-Bucket und laden Sie Ihre Skripts in den Bucket hoch.

Beispiele

Console

  1. Führen Sie die auf dem Tab „Console“ aufgeführten Schritte aus, um entweder einen Patch-Job oder ein Patch-Deployment zu erstellen.
  2. Klicken Sie im Abschnitt Erweiterte Optionen für die Pre- und Post-Patch-Abschnitte auf Suchen. Eine Cloud Storage-Objektseite wird angezeigt.

    Seite zu OS Patch Management mit den Abschnitten zum Skript-Upload

  3. Wählen Sie auf der Cloud Storage-Objektseite den Cloud Storage-Bucket aus, der das Skript enthält, und wählen Sie dann das Cloud Storage-Objekt oder die Cloud Storage-Datei aus.

  4. Nehmen Sie zusätzliche Konfigurationen vor, die für Ihren Patch-Job oder Ihr Deployment erforderlich sind.

  5. Klicken Sie auf Bereitstellen.

gcloud

Führen Sie beispielsweise den folgenden Befehl aus, um einen Patch-Job für alle Instanzen in der Zone northamerica-northeast1-a mit Pre- und Post-Patch-Skript für Linux- und Windows-Instanzen auszuführen:

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"

Führen Sie den folgenden Befehl aus, um mehr über zulässige Dateiformate zu erfahren:

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

API

Führen Sie beispielsweise den folgenden Befehl aus, um einen Patch-Job für alle Instanzen in der Zone northamerica-northeast1-a mit Pre- und Post-Patch-Skript für Linux- und Windows-Instanzen auszuführen:

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"
      }
    }
  }
}

Weitere Informationen zu zulässigen Dateiformaten finden Sie im Abschnitt ExecStepConfig der Dokumentation zur PatchConfig API.

Patch-Rollout-Optionen

Sie können VMs zonenweise (Zone für Zone) patchen. Alternativ ist auch das Patchen aller Zonen gleichzeitig möglich.

Sie können nicht nur eine Auswahl für den Rollout der Zone treffen, sondern auch ein Zonenunterbrechungsbudget für Ihre VMs festlegen.

Unterbrechungsbudget für Zonen

Ein Unterbrechungsbudget ist die maximale Anzahl oder der Prozentsatz der VMs pro Zone, die zu einem bestimmten Zeitpunkt unterbrochen werden sollen.

Was wird als unterbrochene VM betrachtet?

Während des Patchens gilt eine VM ab dem Zeitpunkt, zu dem der OS Config-Agent zum Starten angewiesen wird, bis zum Abschluss des Patch-Vorgangs als unterbrochen. Diese Unterbrechungszeit umfasst die Zeit für den Neustart und alle Schritte nach dem Patch.

Eine VM wird ebenfalls auf das Unterbrechungsbudget angerechnet, wenn sie eine der folgenden Bedingungen erfüllt:

  • Der Patch-Vorgang schlägt bei Anwendung der Patches fehl.
  • Der Patch-Vorgang schlägt fehl, wenn Schritte vor oder nach dem Patch ausgeführt werden.
  • Der Patch-Vorgang sendet vor Ablauf des Zeitlimits keine Erfolgsbenachrichtigung.

Funktionsweise von Unterbrechungsbudgets

Bei zonenweisen Rollouts wird der Patch-Job beendet, wenn das Unterbrechungsbudget in einer Zone überschritten wird. Der Grund hierfür ist, dass der Patch-Vorgang in der vorherigen Zone abgeschlossen sein muss, bevor mit der nächsten Zone fortgefahren werden kann.

Wenn das Unterbrechungsbudget beispielsweise einen Wert von 10 hat und 8 VMs in der aktuellen Zone nicht gepatcht werden können, werden im Rahmen des Patch-Jobs jeweils 2 VMs gleichzeitig gepatcht, bis die Zone abgeschlossen ist. Wenn diese Zone erfolgreich abgeschlossen ist, beginnt das Patchen in der nächsten Zone mit 10 VMs gleichzeitig. Wenn 10 VMs in der nächsten Zone nicht gepatcht werden können, wird der Patch-Job beendet.

Beispiele

Console

  1. Führen Sie die auf dem Tab „Console“ aufgeführten Schritte aus, um entweder einen Patch-Job oder ein Patch-Deployment zu erstellen.
  2. Konfigurieren Sie im Abschnitt Patch rollout options die Rollout-Optionen:
    • Wählen Sie aus, ob eine Zone nach der anderen oder alle Zonen gleichzeitig gepatcht werden sollen.
    • Legen Sie das Unterbrechungsbudget fest. Ein Unterbrechungsbudget ist die Anzahl oder der Prozentsatz von VMs in einer Zone, die gleichzeitig durch den Patch-Prozess unterbrochen werden sollen.
  3. Nehmen Sie zusätzliche Konfigurationen vor, die für Ihren Patch-Job oder Ihr Deployment erforderlich sind.
  4. Klicken Sie auf Bereitstellen.

gcloud

Beispiel 1

In diesem Beispiel sehen Sie den Befehl os-config patch-jobs execute zum Ausführen eines Patch-Jobs mit den folgenden Spezifikationen:

  • Alle VMs in Ihrem Projekt patchen
  • VMs nach Zone patchen
  • Sicherstellen, dass zu einem bestimmten Zeitpunkt nicht mehr als 10 VMs in derselben Zone unterbrochen werden
gcloud compute os-config patch-jobs execute \
   --instance-filter-all \
   --rollout-mode=zone-by-zone \
   --rollout-disruption-budget=10

Beispiel 2

In diesem Beispiel sehen Sie den Befehl os-config patch-jobs execute zum Ausführen eines Patch-Jobs mit den folgenden Spezifikationen:

  • Alle VMs in Ihrem Projekt patchen
  • Zonen gleichzeitig patchen
  • Sicherstellen, dass zu einem bestimmten Zeitpunkt nicht mehr als 50 % der VMs in derselben Zone unterbrochen werden
gcloud compute os-config patch-jobs execute \
   --instance-filter-all \
   --rollout-mode=concurrent-zones \
   --rollout-disruption-budget-percent=50

API

In diesem Beispiel sehen Sie die Methode patchJobs.execute zum Ausführen eines Patch-Jobs mit den folgenden Spezifikationen:

  • Alle VMs in den Zonen us-central1-a, us-central1-c und us-central1-f patchen
  • Zonen gleichzeitig patchen
  • Sicherstellen, dass zu einem bestimmten Zeitpunkt nicht mehr als 25 % der Instanzen in derselben Zone unterbrochen werden
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"
  }
}

Weitere Informationen zum Patch-Rollout finden Sie in der Dokumentation zur PatchRollout API.

Debugging eines Patch-Jobs

Wenn Ihr Patch fehlschlägt, können Sie die folgenden Schritte ausführen, um die Probleme zu finden und zu beheben.

  1. Sehen Sie sich die Instanzdetails für den betroffenen Patch-Job an. So können Sie ermitteln, welche Instanzen einen Fehler verursacht haben oder in welchem Status sie hängen geblieben sind. Die Liste der Instanzdetails enthält außerdem eine kurze Fehlermeldung für jede Instanz.

    Wenn ein Patch mit dem Status NO_AGENT_DETECTED oder TIMED_OUT fehlschlägt, bedeutet dies in der Regel, dass der Dienst eine Anfrage an den Agent gesendet hat, um mit dem Patching zu beginnen, aber keine Antwort vom Agent erhalten hat. Prüfen Sie die folgenden möglichen Ursachen und Lösungen:

    • Die Instanz wird nicht ausgeführt. Starten Sie die VM-Instanz, um dieses Problem zu beheben.
    • Prüfen Sie die Einrichtung mithilfe der Checkliste für die Bestätigung.
    • Die Netzwerkeinstellungen im VPC-Netzwerk oder der Instanz haben nicht zulassen, dass der OS Config-Agent mit der OS Config Service API kommuniziert. Prüfen Sie die Netzwerkeinstellungen, um das Problem zu beheben.
  2. Wenn die Instanzdetails nicht genügend Informationen liefern, sehen Sie sich die Cloud Logging-Logs oder die serielle Port-Konsole an. Der OS Config-Agent schreibt seine Logeinträge in beide Speicherorte. In Cloud Logging können Sie mit der Patch-Job-ID filtern. So können Sie alle Logeinträge anzeigen, die sich auf diesen Patch-Job beziehen. Sie können auch das Debugging-Logging aktivieren. Legen Sie dazu auf der VM- oder Cloud-Projektebene den Metadatenwert osconfig-log-level=debug fest.

Nächste Schritte