← Назад к «Руководства»

Кампании обновлений Linux: настройка и раскатка

Полный справочник по кампаниям установки обновлений Linux: как устроена кампания, все опции мастера, поведение раскатки волнами, действия оператора и готовые сценарии. Быстрое знакомство — на странице вкладки «Обновления Linux»; здесь — глубина и детали.

Как работает кампания

Кампания — это управляемый движок установки обновлений на парк Linux-хостов. По расписанию (или непрерывно) она создаёт батчи — пакеты заданий для агентов lsus-client, следит за отчётами и завершает проход. Что ставить, определяется состоянием репозиториев, на которые смотрят хосты: агент ставит доступные обновления из подключённых ему источников.

Три вида кампаний (выбираются на первой вкладке мастера):

Вид Как работает Когда выбирать
Разовая Один раз приводит хосты к актуальному состоянию: в окно установки создаёт батчи на все доступные обновления и завершается. Обновления, вышедшие позже, не доустанавливаются Регулярная гигиена «в ночь с четверга», разовые акции
Непрерывная Постоянно держит хосты в актуальном состоянии: как только обнаруживаются новые доступные обновления — снова создаёт батч и ставит их. Работает, пока кампанию не остановят Парк должен быть всегда актуален без ручных акций
Раскатка по волнам Пилотная волна ставит срез ветки current, после проверки и выдержки — промоушен проверенного состава в stable и установка остальному парку. Источники хостов должны быть согласованы (линейки с ветками current/stable) Осторожный выкат больших обновлений линеечных репозиториев

infoВолны требуют линеек

Рецепт «раскатка по волнам» опирается на линейку репозитория с ветками current и stable: пилот смотрит current, парк — stable. Без настроенных линеек волновая кампания не создаётся.

Статусы кампании

ожиданиепо расписаниюотправкаработаетзавершено; промежуточные — частично, ошибка, отменено, пауза. У непрерывной — работает, пока её не остановят.

Из чего состоит волновая кампания

  • Срез — зафиксированный на момент старта пилота состав пакетов current. Хранится в карточке кампании (панель снапшота) и сравнивается с текущим current: если состав «уплыл», оператору предлагается выбор среза.
  • Промоушен — перенос состава из current в stable одной транзакцией: всё, что проверил пилот, получает весь парк.
  • Порог (gate) — условия, при которых волна считается пройденной: отчёты хостов, сбои, целостность пакетов, перезагрузки, согласия и отзывы аттестации (задаются на вкладке «Волны»).
  • Выдержка (soak) — пауза после прохождения порога перед следующим шагом, чтобы проблемы проявились до раскатки дальше.

Мастер: все опции

Мастер разбит на вкладки Задача → Линейка → Окно → Волны → Аттестация → Итог. Вкладки «Линейка», «Волны» и «Аттестация» появляются только для рецепта «раскатка по волнам».

Вкладка «Задача»

Мастер кампании, вкладка «Задача»

Поле Поведение
Что делаем Три вида кампании — см. таблицу выше. От выбора зависят появляющиеся вкладки и поля
Название Обязательно; показывается в списке, журнале и уведомлениях
Куда устанавливаем Дерево целей: коллекции Каталога и политик и/или отдельные хосты. В кампанию попадают только Linux-хосты; у непрерывной состав цели пересматривается на каждом тике

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

Вкладка «Линейка» (только раскатка)

Мастер кампании, вкладка «Линейка»

Поле Поведение
Версия ОС Пресет ОС (например, «Astra Linux 1.7»): задаёт аудиторию кампании и подтягивает все линейки этой версии — дистрибутивные и прикладные
Прикладные линейки Дополнительные линейки (например, внутренние приложения), добавляются явно. Промоушен всех отмеченных линеек идёт одной транзакцией — линейки не разъезжаются по версиям

Если цель содержит хосты чужой версии ОС, мастер покажет предупреждение: они в раскатку этой линейки не попадут.

Вкладка «Окно»

Мастер кампании, вкладка «Окно»

Расписание — когда кампания запускает проходы:

  • Разово — конкретная дата и время (или «сразу»);
  • Еженедельно — дни недели (Пн–Вс) и время;
  • Ежемесячно — по числу месяца или по правилу «N-й день недели» (например, «второй вторник» — Patch Tuesday).

Окно установки — дни и время суток, когда разрешено ставить обновления. Для разовой задаёт момент единственного прохода, для непрерывной — ограничивает, когда движок может создавать новые батчи. Если машина не успела в окно — задание отменяется. Разброс ±N минут рассыпает старт по хостам, чтобы парк не упёрся в репозиторий одновременно.

Опция Значения и поведение
Перезагрузка никогда / если нужно / всегда — управляет перезагрузкой хоста после установки
Предзагрузить пакеты Скачать пакеты на хост до окна установки — в окне останется только установить
Резерв окна «Не начинать установку/перезагрузку, если до конца окна меньше N мин» — отрезает хвост окна, чтобы не стартовать без запаса. Идущая установка не прерывается; без окна резерв не действует
Хуки Только для коллекций с ролью «Сервер»: Pre — остановить службы / скрипт до установки, Post — запустить службы / скрипт после. Например, остановить БД перед обновлением и поднять после

Снапшоты LVM (ставятся агентом перед обновлением, подробнее — снапшоты):

Опция Поведение
Снапшот перед обновлением выкл / если возможно (хосту без LVM просто продолжит) / обязательно (хосту без возможности снапшота задание не выдаётся)
Хранить снапшотов Сколько последних снапшотов кампании держать на хосте (по умолчанию 3)
Автоудаление через, ч Срок жизни снапшотов после завершения кампании; пусто — дефолт сервера, 0 — не удалять

Для непрерывной кампании вместо расписания — тайминги: «как часто проверять хосты, мин» (сверка состояния; на скан хоста или изменение группы реагирует сразу) и «пауза между установками на хосте, мин» (после ошибок пауза удваивается).

Вкладка «Волны» (только раскатка)

Мастер кампании, вкладка «Волны»

Волн всегда две: пилот на current и остальные на stable после промоушена.

Состав пилота — два режима:

  • Хосты на current — пилотом становятся все цели, чей репозиторий по GPO/политике смотрит ветку current. Кнопка «Сузить пилот…» ограничивает его поддеревом целей;
  • По согласиям + технические — аттестуемые хосты попадают в пилот по принятому согласию; технические участвуют только в пороге, без отзыва.

Порог перехода (когда пилот считается пройденным):

Порог По умолчанию Поведение
Ждать согласий, ч 24 Сколько времени принимать согласия хостов на обновление
Минимум согласившихся хостов 0 Нижняя граница согласий для перехода
Выдержка после gate, дн 7 Пауза после прохождения порога; опция «только рабочие дни» считает Пн–Пт в поясе сервера
Минимум отчитавшихся, % 75 Хостов волны должны прислать отчёт, иначе — ждём, а не блокируем
Стоп массового сбоя, % 10 Доля провалов выше — волна блокируется
Требовать отсутствие broken dependencies После обновления на хосте не должно быть сломанных зависимостей пакетов
Хост должен вернуться после reboot Хост считается успешным, только если перезагрузился и вернулся

Требовать подтверждения оператора (включено по умолчанию) — если снять, после успешного порога и выдержки волна «Остальные» стартует сама. Окно установки задаёт, когда появятся задания, а не когда сменится волна. В режиме согласий автопереход дополнительно ждёт отзывы по порогу аттестации.

infoПороги задаются при создании

Выдержка и пороги фиксируются созданием кампании. У существующего пилота позже можно только включить или снять подтверждение оператора.

Вкладка «Аттестация» (только раскатка)

Мастер кампании, вкладка «Аттестация»

Чекбокс «создать сессию тестирования и собирать отзывы» включает обратную связь пилота с людьми: участники — носители роли «Тестирование. Участник» (прямые назначения, привязанные коллекции и отложенные роли; привязка роли к OU без вложенных в сессии разворачивается целиком).

Поле По умолчанию Поведение
Минимум отзывов, % 100 Какая доля участников должна прислать отзыв
Макс. отрицательных 0 Сколько «плохих» отзывов допустимо для перехода
Ждать отзывы, ч 72 Окно сбора отзывов

Отзывы попадают в порог перехода пилота: кампания не пойдёт дальше, пока отзывы не собраны (или не истекло окно), а отрицательных больше лимита — переход остановится.

Вкладка «Итог»

Кнопка «Пересчитать» строит предпросмотр: цели, охват по волнам, расписание. Внизу мастера живая сводка (вид, число целей, для раскатки — «пилот на current, затем stable»).

Как идут волны

Статусы волны

Статус Что означает
ожидание Волна ещё не стартовала (ждёт своей очереди)
идёт Хостам волны выдаются задания, идут установки
выдержка Порог пройден, идёт пауза soak (в таблице видно «до <дата>»)
ждёт подтверждения Порог и выдержка пройдены, волна ждёт кнопки оператора
пройдена Волна завершена, следующая может стартовать
блокировка Порог нарушен (например, массовый сбой) — смотрите разбор
отменена Волна отменена оператором

Что происходит после старта

  1. Пилот снимает срез current (состав фиксируется) и ставит его хостам волны в окно установки.
  2. Движок на каждом тике оценивает порог: отчёты, сбои, broken dependencies, возврат после перезагрузки; в режиме согласий — ещё согласия и отзывы аттестации.
  3. Порог выполнен → выдержка (дни, опционально только рабочие).
  4. После выдержки — либо подтверждение оператора, либо автопереход (если снято требование подтверждения).
  5. Переход запускает промоушен среза в stable — и «Остальные» получают проверенный состав. Задания хвоста появляются в окне установки: смена волны и момент выдачи задания — разные события.
  6. Хосты «хвоста» до старта их волны стоят в статусе «ждёт волну» с подсказкой, после чего задание появится.

Если current ушёл от среза

Пока пилот проверяет срез, в current могут попасть новые пакеты. На экране кампании появится блок «Нужен выбор среза» и модалка с тремя кнопками:

  • «Промоутить срез» — раскатать дальше именно проверенный пилотом состав (рекомендуется);
  • «Промоутить current» — взять актуальный состав current без перепроверки;
  • «Перезапустить пилот» — снять новый срез и прогнать пилот заново.

Автопереход в этой ситуации не стартует — решение всегда за оператором.

Замороженные хосты

Хосты в состоянии frozen (заморозка обновлений) исключаются из волн автоматически — аттестованные АРМ и машины с мораторием раскатка не тронет.

Пример с демо-стенда

Кампания «Astra 1.8 wave trial» (пресет Astra 1.8, разовый запуск, перезагрузка «если нужно», снапшоты выключены):

Волна Состав Хостов Подтверждение Состояние
Пилот хосты на current 1 требуется пройдена
Остальные все цели кампании 5 снято идёт

Пилот с подтверждением оператора проверил срез; у «Остальных» подтверждение снято — после порога они стартовали сами. На экране кампании: «Действий не требуется — идёт волна "Остальные": установлено 3 из 5».

Экран кампании и действия оператора

Экран кампании с волнами

Клик по кампании в списке открывает экран: блок «следующий шаг», таблица «Волны раскатки», список хостов и свёрнутые «Параметры кампании».

Блок «следующий шаг» всегда отвечает на вопрос «что сейчас происходит и нужно ли действие»:

Сообщение Смысл
«Идёт волна / Идёт выдержка» Действий не требуется; при автопереходе пишется, когда поставят «Остальные»
«Нужно подтверждение» Пилот прошёл проверку — кнопка «Подтвердить переход»
«Нужен выбор среза» Current ушёл — выбор среза (см. выше)
«Волна остановлена» Проверка не пройдена — кнопка «Разбор» показывает причины
«Все волны завершены» По волнам кампания больше ничего не ждёт

В таблице волн — прогресс-бар по хостам, статус, состояние порога («ждём отчёты» / «порог выполнен» / причины) и выдержка («7 дн», «до 12.09», «(раб.)»). Действия собраны в меню строки волны:

Действие Доступно в статусе Что делает
Подтвердить переход ждёт подтверждения Переводит волну дальше (запускает промоушен и следующую волну)
Стартовать как есть ожидание (предыдущая пройдена) Стартует волну не дожидаясь расписания
Пропустить выдержку выдержка Завершает soak немедленно, порог должен быть выполнен
Разбор блокировка, ждёт подтверждения Модалка с причинами: кто не отчитался, кто упал, broken dependencies
Перезапустить пилот пилот (выдержка/подтверждение/блокировка) Снимает новый срез и прогоняет пилот заново

lightbulbПауза и остановка

Сама кампания, как и любая другая, ставится на паузу и отменяется из списка кампаний — это не трогает уже выданные задания, но останавливает выдачу новых.

Сценарий 1. Еженедельная гигиена парка

Задача: «каждый четверг ночью обновляем рабочие станции, перезагрузка — если нужно».

  1. Кампании установки → «Создать кампанию», вид «Разовая».
  2. Задача: цели — коллекция рабочих станций; имя с суффиксом даты.
  3. Окно: расписание «еженедельно, Чт 03:00», окно 03:00–06:00, разброс ±20 мин; перезагрузка «если нужно»; снапшот «если возможно».
  4. Итог — «Пересчитать» и создать.

Дальше кампания сама создаёт батчи по расписанию; не успевшие в окно хосты доберутся на следующем проходе. Для «всегда актуального» парка вместо этого создайте непрерывную с интервалом проверки 60 минут и ночным окном.

Сценарий 2. Волновая раскатка обновлений линейки

Задача: выкатить накопительное обновление линейки Astra 1.8 — сначала пилоту, после проверки всему парку.

Подготовка (однократно):

  1. Настройте линейку дистрибутива с ветками current и stable: current наполняется из зеркала, stable — то, что уже проверено.
  2. Пилотной группе (по GPO/политике) назначьте репозиторий ветки current, остальному парку — stable.
  3. Создайте сессию тестирования и назначьте участникам роль «Тестирование. Участник» (см. Тестирование обновлений) — отзывы попадут в порог перехода пилота.

Кампания:

  1. Кампании установки → «Создать кампанию», вид «Раскатка по волнам».
  2. Задача: цели — все хосты пресета ОС; имя сформируйте кнопкой «Подставить».
  3. Линейка: выберите пресет ОС (например, Astra 1.8) — подтянутся все линейки версии; прикладные линейки добавьте явно.
  4. Окно: расписание и окно как для обычной кампании.
  5. Волны:
    - состав пилота — по умолчанию все, кто смотрит current; при необходимости сузьте деревом целей;
    - порог перехода: «ждать согласий» 48 часов, «минимум согласившихся хостов» — 5, «выдержка после порога» — 2 дня;
    - «Требовать подтверждения оператора» — оставьте включённым для первого прогона, снимите, когда процесс обкатан (см. ниже);
    - замороженные (frozen) хосты исключаются автоматически.

Вкладка «Волны» мастера кампании

  1. Аттестация: привяжите сессию тестирования — отзывы участников ускоряют принятие решения о переходе.
  2. Итог — «Пересчитать» и создать.

Дальше кампания ведёт себя так: пилот ставит срез состава current (состав фиксируется на момент старта); когда порог выполнен и выдержка прошла, «Остальные» переходят на stable — с кнопки оператора «Подтвердить переход» (по умолчанию) или сами, если подтверждение снято. Окно установки задаёт, когда появятся задания на хостах, а не момент смены волны; в режиме согласий автопереход дополнительно ждёт отзывы по порогу аттестации.

priority_highЕсли current ушёл от среза

Пока пилот проверяет срез, в current могут попасть новые пакеты. На экране кампании появится выбор: «Промоутить срез» — раскатать дальше именно проверенный состав (рекомендуется), или «Перезапустить пилот» — снять новый срез и проверить заново. Автопереход в этой ситуации не стартует — решение всегда за оператором.

Практики волновой раскатки:

  • Пилот — 3–10 машин, обязательно включая самые «проблемные» профили (тонкие клиенты, терминальные серверы, станции с нестандартным ПО).
  • Не жалейте выдержку: 2–7 дней на пилоте дешевле, чем откат на всём парке.
  • Подтверждение оператора: включайте, пока не доверяете порогам (первые 2–3 кампании), снимайте — когда пороги откалиброваны и дежурный оператор не нужен ночью. Снятое подтверждение не отменяет ни выдержку, ни окно установки.
  • Замораживайте (frozen) машины, где обновления запрещены (например, аттестованные АРМ) — волны их не тронут.
  • Комбинируйте пороги: согласия + отзывы тестировщиков + выдержка. Один критерий легко даёт ложное «готово».

Сценарий 3. Срочный патч безопасности

Патч вышел сегодня, ставить нужно срочно:

  1. Убедитесь, что пакет попал в репозиторий (зеркало синхронизировано, для линеек — промоутьте в current или stable по ситуации).
  2. Для точечных машин — пакетное задание (сейчас, без расписания).
  3. Для парка — кампания с близким окном; для срочности не создавайте пилотную волну — это работа простых кампаний/заданий.

Типовые проблемы

Симптом Причина Решение
Волна «идёт», но порог «ждём отчёты» Хосты выключены/офлайн или ещё в разбросе старта Проверьте охват волны живыми машинами; дождитесь окон
«Минимум отчитавшихся» не набирается В цели попали мёртвые хосты из каталога Сузьте цели, exclusion-правилами уберите выключенные
Волна в «блокировке» после пилота Массовые сбои или broken dependencies на хостах Откройте «Разбор», чините причину, затем «Перезапустить пилот»
Переход не происходит, хотя порог выполнен Идёт выдержка или включено подтверждение оператора Дождитесь soak, нажмите «Подтвердить переход» или «Пропустить выдержку»
«Нужен выбор среза» В current попали новые пакеты после старта пилота «Промоутить срез» (проверенный состав) или «Перезапустить пилот»

Связанные страницы