Кампании обновлений Linux: настройка и раскатка
Полный справочник по кампаниям установки обновлений Linux: как устроена кампания, все опции мастера, поведение раскатки волнами, действия оператора и готовые сценарии. Быстрое знакомство — на странице вкладки «Обновления Linux»; здесь — глубина и детали.
Как работает кампания¶
Кампания — это управляемый движок установки обновлений на парк Linux-хостов. По расписанию (или непрерывно) она создаёт батчи — пакеты заданий для агентов lsus-client, следит за отчётами и завершает проход. Что ставить, определяется состоянием репозиториев, на которые смотрят хосты: агент ставит доступные обновления из подключённых ему источников.
Три вида кампаний (выбираются на первой вкладке мастера):
| Вид | Как работает | Когда выбирать |
|---|---|---|
| Разовая | Один раз приводит хосты к актуальному состоянию: в окно установки создаёт батчи на все доступные обновления и завершается. Обновления, вышедшие позже, не доустанавливаются | Регулярная гигиена «в ночь с четверга», разовые акции |
| Непрерывная | Постоянно держит хосты в актуальном состоянии: как только обнаруживаются новые доступные обновления — снова создаёт батч и ставит их. Работает, пока кампанию не остановят | Парк должен быть всегда актуален без ручных акций |
| Раскатка по волнам | Пилотная волна ставит срез ветки current, после проверки и выдержки — промоушен проверенного состава в stable и установка остальному парку. Источники хостов должны быть согласованы (линейки с ветками current/stable) |
Осторожный выкат больших обновлений линеечных репозиториев |
Волны требуют линеек
Рецепт «раскатка по волнам» опирается на линейку репозитория с ветками 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 | ✓ | Хост считается успешным, только если перезагрузился и вернулся |
Требовать подтверждения оператора (включено по умолчанию) — если снять, после успешного порога и выдержки волна «Остальные» стартует сама. Окно установки задаёт, когда появятся задания, а не когда сменится волна. В режиме согласий автопереход дополнительно ждёт отзывы по порогу аттестации.
Пороги задаются при создании
Выдержка и пороги фиксируются созданием кампании. У существующего пилота позже можно только включить или снять подтверждение оператора.
Вкладка «Аттестация» (только раскатка)¶

Чекбокс «создать сессию тестирования и собирать отзывы» включает обратную связь пилота с людьми: участники — носители роли «Тестирование. Участник» (прямые назначения, привязанные коллекции и отложенные роли; привязка роли к OU без вложенных в сессии разворачивается целиком).
| Поле | По умолчанию | Поведение |
|---|---|---|
| Минимум отзывов, % | 100 | Какая доля участников должна прислать отзыв |
| Макс. отрицательных | 0 | Сколько «плохих» отзывов допустимо для перехода |
| Ждать отзывы, ч | 72 | Окно сбора отзывов |
Отзывы попадают в порог перехода пилота: кампания не пойдёт дальше, пока отзывы не собраны (или не истекло окно), а отрицательных больше лимита — переход остановится.
Вкладка «Итог»¶
Кнопка «Пересчитать» строит предпросмотр: цели, охват по волнам, расписание. Внизу мастера живая сводка (вид, число целей, для раскатки — «пилот на current, затем stable»).
Как идут волны¶
Статусы волны¶
| Статус | Что означает |
|---|---|
ожидание |
Волна ещё не стартовала (ждёт своей очереди) |
идёт |
Хостам волны выдаются задания, идут установки |
выдержка |
Порог пройден, идёт пауза soak (в таблице видно «до <дата>») |
ждёт подтверждения |
Порог и выдержка пройдены, волна ждёт кнопки оператора |
пройдена |
Волна завершена, следующая может стартовать |
блокировка |
Порог нарушен (например, массовый сбой) — смотрите разбор |
отменена |
Волна отменена оператором |
Что происходит после старта¶
- Пилот снимает срез
current(состав фиксируется) и ставит его хостам волны в окно установки. - Движок на каждом тике оценивает порог: отчёты, сбои, broken dependencies, возврат после перезагрузки; в режиме согласий — ещё согласия и отзывы аттестации.
- Порог выполнен → выдержка (дни, опционально только рабочие).
- После выдержки — либо подтверждение оператора, либо автопереход (если снято требование подтверждения).
- Переход запускает промоушен среза в
stable— и «Остальные» получают проверенный состав. Задания хвоста появляются в окне установки: смена волны и момент выдачи задания — разные события. - Хосты «хвоста» до старта их волны стоят в статусе «ждёт волну» с подсказкой, после чего задание появится.
Если 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 |
| Перезапустить пилот | пилот (выдержка/подтверждение/блокировка) | Снимает новый срез и прогоняет пилот заново |
Пауза и остановка
Сама кампания, как и любая другая, ставится на паузу и отменяется из списка кампаний — это не трогает уже выданные задания, но останавливает выдачу новых.
Сценарий 1. Еженедельная гигиена парка¶
Задача: «каждый четверг ночью обновляем рабочие станции, перезагрузка — если нужно».
- Кампании установки → «Создать кампанию», вид «Разовая».
- Задача: цели — коллекция рабочих станций; имя с суффиксом даты.
- Окно: расписание «еженедельно, Чт 03:00», окно 03:00–06:00, разброс ±20 мин; перезагрузка «если нужно»; снапшот «если возможно».
- Итог — «Пересчитать» и создать.
Дальше кампания сама создаёт батчи по расписанию; не успевшие в окно хосты доберутся на следующем проходе. Для «всегда актуального» парка вместо этого создайте непрерывную с интервалом проверки 60 минут и ночным окном.
Сценарий 2. Волновая раскатка обновлений линейки¶
Задача: выкатить накопительное обновление линейки Astra 1.8 — сначала пилоту, после проверки всему парку.
Подготовка (однократно):
- Настройте линейку дистрибутива с ветками
currentиstable:currentнаполняется из зеркала,stable— то, что уже проверено. - Пилотной группе (по GPO/политике) назначьте репозиторий ветки
current, остальному парку —stable. - Создайте сессию тестирования и назначьте участникам роль «Тестирование. Участник» (см. Тестирование обновлений) — отзывы попадут в порог перехода пилота.
Кампания:
- Кампании установки → «Создать кампанию», вид «Раскатка по волнам».
- Задача: цели — все хосты пресета ОС; имя сформируйте кнопкой «Подставить».
- Линейка: выберите пресет ОС (например, Astra 1.8) — подтянутся все линейки версии; прикладные линейки добавьте явно.
- Окно: расписание и окно как для обычной кампании.
- Волны:
- состав пилота — по умолчанию все, кто смотритcurrent; при необходимости сузьте деревом целей;
- порог перехода: «ждать согласий» 48 часов, «минимум согласившихся хостов» — 5, «выдержка после порога» — 2 дня;
- «Требовать подтверждения оператора» — оставьте включённым для первого прогона, снимите, когда процесс обкатан (см. ниже);
- замороженные (frozen) хосты исключаются автоматически.

- Аттестация: привяжите сессию тестирования — отзывы участников ускоряют принятие решения о переходе.
- Итог — «Пересчитать» и создать.
Дальше кампания ведёт себя так: пилот ставит срез состава current (состав фиксируется на момент старта); когда порог выполнен и выдержка прошла, «Остальные» переходят на stable — с кнопки оператора «Подтвердить переход» (по умолчанию) или сами, если подтверждение снято. Окно установки задаёт, когда появятся задания на хостах, а не момент смены волны; в режиме согласий автопереход дополнительно ждёт отзывы по порогу аттестации.
Если current ушёл от среза
Пока пилот проверяет срез, в current могут попасть новые пакеты. На экране кампании появится выбор: «Промоутить срез» — раскатать дальше именно проверенный состав (рекомендуется), или «Перезапустить пилот» — снять новый срез и проверить заново. Автопереход в этой ситуации не стартует — решение всегда за оператором.
Практики волновой раскатки:
- Пилот — 3–10 машин, обязательно включая самые «проблемные» профили (тонкие клиенты, терминальные серверы, станции с нестандартным ПО).
- Не жалейте выдержку: 2–7 дней на пилоте дешевле, чем откат на всём парке.
- Подтверждение оператора: включайте, пока не доверяете порогам (первые 2–3 кампании), снимайте — когда пороги откалиброваны и дежурный оператор не нужен ночью. Снятое подтверждение не отменяет ни выдержку, ни окно установки.
- Замораживайте (
frozen) машины, где обновления запрещены (например, аттестованные АРМ) — волны их не тронут. - Комбинируйте пороги: согласия + отзывы тестировщиков + выдержка. Один критерий легко даёт ложное «готово».
Сценарий 3. Срочный патч безопасности¶
Патч вышел сегодня, ставить нужно срочно:
- Убедитесь, что пакет попал в репозиторий (зеркало синхронизировано, для линеек — промоутьте в
currentилиstableпо ситуации). - Для точечных машин — пакетное задание (сейчас, без расписания).
- Для парка — кампания с близким окном; для срочности не создавайте пилотную волну — это работа простых кампаний/заданий.
Типовые проблемы¶
| Симптом | Причина | Решение |
|---|---|---|
| Волна «идёт», но порог «ждём отчёты» | Хосты выключены/офлайн или ещё в разбросе старта | Проверьте охват волны живыми машинами; дождитесь окон |
| «Минимум отчитавшихся» не набирается | В цели попали мёртвые хосты из каталога | Сузьте цели, exclusion-правилами уберите выключенные |
| Волна в «блокировке» после пилота | Массовые сбои или broken dependencies на хостах | Откройте «Разбор», чините причину, затем «Перезапустить пилот» |
| Переход не происходит, хотя порог выполнен | Идёт выдержка или включено подтверждение оператора | Дождитесь soak, нажмите «Подтвердить переход» или «Пропустить выдержку» |
| «Нужен выбор среза» | В current попали новые пакеты после старта пилота | «Промоутить срез» (проверенный состав) или «Перезапустить пилот» |
Связанные страницы¶
- Обновления Linux — вкладка кампаний, батчи, compliance.
- Кампании обновлений Windows — тот же подход для KB.
- Тестирование обновлений — сессии и отзывы аттестации.
- Каталог и политики — коллекции-цели и роли участников.
- Обновление системы — обновление компонентов LSUS.