Облачная платформаEvolution

Политика Patch


Patch-политика описывает параметры обновления пакетов для разных операционных систем и дополнительные шаги.

YAML-шаблон

patchConfig:
rebootConfig: DEFAULT
retryStrategy: null
apt:
type: DIST
excludes: []
exclusivePackages: []
yum:
security: true
minimal: true
excludes: []
exclusivePackages: []
goo: null
zypper: null
windowsUpdate: null
preStep: null
postStep: null
migInstancesAllowed: false
dryRun: false

Параметры

Параметр

Тип

Описание

rebootConfig

Строка

Поведение перезагрузки при установке обновлений:

  • DEFAULT — агент сам решает, нужна ли перезагрузка, проверяя сигналы ОС.

  • ALWAYS — хост будет всегда перезагружаться после обновления.

  • NEVER — хост не будет перезагружаться после обновления.

retryStrategy

Объект или null

Выполнение повторных попыток установки обновления:

  • null — если установка не получилась, агент не пытается обновить хост повторно.

  • enabled: true — агент будет повторять попытки применить обновления до истечения окна обновления, которое определяется параметром политики Время ожидания.

Несовместимо с dryRun.

apt

Объект или null

Настройки для Debian/Ubuntu.

yum

Объект или null

Настройки для RHEL/CentOS/SberLinux.

goo

Объект или null

Настройки для Windows GooGet.

zypper

Объект или null

Настройки для SUSE/openSUSE.

windowsUpdate

Объект или null

Настройки для Windows Update.

preStep

Объект или null

Скрипт перед обновлением.

postStep

Объект или null

Скрипт после обновления.

migInstancesAllowed

Булево

Разрешить выполнение на виртуальных машинах, входящих в группы (MIG). Параметр используется для совместимости, поведение агента не изменяет.

dryRun

Булево

Если true, агент выполнит все шаги симуляции: проверит наличие пакетов, определит, какие будут обновлены, но не применит ни одного изменения и не перезагрузит систему. Полезно для оценки объема обновлений перед реальным запуском.

Несовместимо с retryStrategy.

Настройки apt

Применяются на виртуальных машинах под управлением Debian и Ubuntu.

apt:
type: DIST
excludes: []
exclusivePackages: []

Параметр

Тип

Описание

type

Строка

Тип обновления:

  • UPGRADE — выполняет apt-get update && apt-get upgrade. Обновляет установленные пакеты до последних версий без удаления.

  • DIST — выполняет apt-get update && apt-get dist-upgrade. Обновляет пакеты и при необходимости разрешает конфликты зависимостей удалением или установкой новых пакетов.

  • TYPE_UNSPECIFIED — аналогично UPGRADE. Значение по умолчанию.

excludes

Массив

Список пакетов, которые не будут обновлены. Например: ["docker-ce", "containerd.io"]. Несовместимо с exclusivePackages.

exclusivePackages

Массив

Список пакетов, которые единственные будут обновлены. Пакеты, отсутствующие в системе, игнорируются. Несовместимо с excludes.

Настройки yum

Применяются на виртуальных машинах под управлением RHEL, CentOS и SberLinux.

yum:
security: true
minimal: true
excludes: []
exclusivePackages: []

Параметр

Тип

Описание

security

Булево

Если true, агент установит только обновления, помеченные как исправления безопасности.

minimal

Булево

Если true, агент установит только минимально необходимые версии пакетов для закрытия уязвимостей, без мажорных обновлений. Совместимо с security.

excludes

Массив

Список пакетов, которые не будут обновлены. Например: ["kernel-debug", "kernel-devel"]. Несовместимо с exclusivePackages.

exclusivePackages

Массив

Список пакетов, которые единственные будут обновлены. Пакеты, отсутствующие в системе, игнорируются. Несовместимо с excludes.

Настройки goo

Применяются на виртуальных машинах Windows с менеджером пакетов GooGet. Выполняется googet update.

goo: {}

Объект может быть передан, но не содержит настраиваемых полей.

Настройки zypper

Применяются на виртуальных машинах под управлением SUSE Linux Enterprise Server и openSUSE. Выполняется zypper patch с соответствующими флагами.

zypper:
withOptional: false
withUpdate: true
categories:
- security
severities:
- critical
- important
excludes: []
exclusivePatches: []

Параметр

Тип

Описание

withOptional

Булево

Если true, агент включает в обновление необязательные патчи.

withUpdate

Булево

Если true, агент включает обновления пакетов наряду с патчами.

categories

Массив строк

Список категорий патчей, которые будут обновлены. Распространенные значения: security, recommended, feature, optional.

severities

Массив строк

Список уровней критичности патчей, которые будут обновлены. Возможные значения: critical, important, moderate, low.

excludes

Массив строк

Список названий пакетов, которые не будут обновлены. Несовместимо с exclusivePackages.

exclusivePackages

Массив строк

Список пакетов, которые единственные будут обновлены. Пакеты, отсутствующие в системе, игнорируются. Несовместимо с excludes.

Настройки windowsUpdate

Применяются на виртуальных машинах под управлением Windows. Обновления устанавливаются через Windows Update Agent.

windowsUpdate:
classifications:
- CRITICAL
- SECURITY
excludes: []
exclusivePatches: []

Параметр

Тип

Описание

classifications

Массив строк

Классы обновлений, которые будут установлены. Возможные значения:

  • CRITICAL — критические исправления, не связанные с безопасностью.

  • SECURITY — обновления безопасности

  • DEFINITION — обновления определений, например антивирус.

  • DRIVER — драйверы устройств.

  • FEATURE_PACK — наборы новых функций.

  • SERVICE_PACK — пакеты обновлений (Service Packs).

  • TOOL — системные утилиты.

  • UPDATE_ROLLUP — накопительные обновления.

  • UPDATE— обычные обновления.

Если список пуст, устанавливаются обновления всех классов.

excludes

Массив строк

Список идентификаторов обновлений (Knowledge Base), которые не будут установлены. Обычно не обновляют через политику следующие пакеты:

  • kubelet;

  • kubeadm;

  • kubernetes-cni — CNI-плагины;

  • linux-image* — ядро;

  • postgresql* — все версии PostgreSQL.

Их лучше обновить вручную.

Несовместимо с exclusivePatches.

exclusivePatches

Массив строк

Список идентификаторов обновлений, которые единственно будут установлены. Несовместимо с excludes.

Скрипты до и после обновления

Блоки позволяют выполнить произвольный скрипт:

  • preStep — перед началом обновления;

  • postStep — после его завершения, но до проверки необходимости перезагрузки.

preStep:
linuxExecStepConfig:
localPath: /opt/scripts/pre-patch.sh
interpreter: SHELL
allowedSuccessCodes: [0]
windowsExecStepConfig:
localPath: C:\Scripts\pre-patch.ps1
interpreter: POWERSHELL
allowedSuccessCodes: [0]

Параметр

Тип

Описание

linuxExecStepConfig

Объект

Конфигурация для виртуальной машины Linux.

windowsExecStepConfig

Объект

Конфигурация для виртуальной машины Windows.

localPath

Cтрока

Абсолютный путь к исполняемому файлу на виртуальной машине. Несовместимо с gcsObject.

gcsObject

Объект

Альтернативный способ указания скрипта — объект из GCS:

gcsObject:
bucket: my-bucket
object: scripts/pre-patch.sh
generationNumber: "1234567890"

Несовместимо с localPath.

interpreter

Cтрока

Интерпретатор для выполнения скрипта:

  • SHELL/bin/sh на Linux, cmd на Windows;

  • POWERSHELL — PowerShell;

  • NONE — выполнить файл напрямую, нужен shebang.

allowedSuccessCodes

Массив чисел

Коды ответа, которые считаются успехом. По умолчанию [0]. Если скрипт завершится с кодом вне списка, задача будет помечена как FAILED.

Примеры

Ниже приведены примеры Patch-политик для различных сценариев обновления ПО.

Пример 1. Еженедельное обновление Ubuntu

Политика обновляет все виртуальные машины Ubuntu с префиксом «web-» каждое воскресенье в 02:00:

  • Агент на каждой виртуальной машине выполняет apt-get update && apt-get dist-upgrade.

  • Если во время обновления возникает сбой, агент повторяет попытку.

  • После установки агент проверяет /var/run/reboot-required. Если файл существует, перезагружает виртуальную машину.

  • Одновременно обновляются максимум 5 виртуальных машин.

Параметры:

  • График выполнения0 2 * * 0;

  • Префикс хостаweb-;

  • Одновременные обработки5;

  • РежимPatch;

  • Политика в формате YAML — указан следующий шаблон:

    patchesTask:
    patchConfig:
    rebootConfig: DEFAULT
    retryStrategy:
    enabled: true
    apt:
    type: DIST
    excludes: [kubelet, kubeadm, kubernetes-cni, linux-image*, postgresql*]
    exclusivePackages: []
    yum: null
    goo: null
    zypper: null
    windowsUpdate: null
    preStep: null
    postStep: null
    migInstancesAllowed: false
    dryRun: false

Пример 2. Ежемесячные обновления безопасности CentOS

Политика обновляет все виртуальные машины CentOS с тегом «security-updates» 1-го числа каждого месяца в 03:00:

  • Агент выполняет yum update-minimal -y --security.

  • Пакеты kernel-debug и kernel-devel исключены.

  • После завершения все машины перезагружаются.

  • Одновременно обновляются максимум 3 виртуальные машины.

Параметры:

  • График выполнения0 3 1 * *;

  • Тегиsecurity-updates;

  • Одновременные обработки3;

  • РежимPatch;

  • Политика в формате YAML — указан следующий шаблон:

    patchesTask:
    patchConfig:
    rebootConfig: ALWAYS
    retryStrategy: null
    apt: null
    yum:
    security: true
    minimal: true
    excludes:
    - kernel-debug
    - kernel-devel
    exclusivePackages: []
    goo: null
    zypper: null
    windowsUpdate: null
    preStep: null
    postStep: null
    migInstancesAllowed: false
    dryRun: false

Пример 3. Проверка обновления

Политика проверит необходимость обновления — агент определит, какие пакеты нужно обновить, но не изменит систему.

Параметры:

patchesTask:
patchConfig:
rebootConfig: DEFAULT
retryStrategy: null
apt:
type: UPGRADE
excludes: []
exclusivePackages: []
yum: null
goo: null
zypper: null
windowsUpdate: null
preStep: null
postStep: null
migInstancesAllowed: false
dryRun: true