Назад | Перейти на главную страницу

Как я могу эффективно управлять apt на нескольких машинах?

Я управляю примерно 30 серверами Ubuntu с помощью марионетки. Я видел много ссылок на cron-apt и apticron как на подходы к обновлению своих пакетов, но мне не удалось найти способ централизованно управлять процессом. С cront-apt / apticron мне все равно нужно будет входить в систему на каждом хосте и запускать aptitude update для выполнения обновления. Не говоря уже о проверке уведомлений со всех 30 машин при каждом обновлении основного пакета.

Там должен быть лучший способ. Какие-либо предложения?

Сотрудник обнаружил и кратко изучил apt-dater, который является «диспетчером удаленного обновления пакетов на основе терминала».

Вы используете интерфейс на основе curses для управления обновлениями на всех ваших хостах или группах хостов и т. Д. Поддерживает ведение журнала всего сеанса APT, включая любые ошибки, которые могут возникнуть, и т. Д.

На управляемых машинах полагается на ssh и sudo.

видеть http://www.ibh.de/apt-dater/

Сам не использовал, поэтому не могу одобрить его, но звучит близко к тому, что вы ищете.

Поскольку вы уже используете Puppet, самый простой способ сделать это (и лучший для целей контроля / отслеживания изменений) - указать желаемую версию пакетов, которые вы хотите установить, в манифесте марионетки. Вы следите за списком объявлений о безопасности, и когда что-то, что вы используете, приходит через него, вы просто обновляете Puppet, чтобы сказать «установите эту новую версию этого пакета». Предполагая, что вы используете контроль версий в своих манифестах, тогда вы узнаете, когда была изменена «политика», и отчеты Puppet покажут вам, когда именно было внесено изменение (так что вы можете легко сопоставить это с любыми последующими событиями журнала).

Пейзаж могут быть вам интересны. Это «официальный» инструмент управления для управления крупными развертываниями Ubuntu, и Canonical, вероятно, очень хочет получить ваши деньги за его использование.

РЕДАКТИРОВАТЬ:

Во-первых, отказ от ответственности; Я не использовал зеркалирование для Debian или Ubuntu, поэтому я не знаком с программным обеспечением.

Во-вторых, примите мои извинения, что apt-mirror будет "слишком тяжелым" решением. Первоначальная идея заключалась в том, что у вас будет отдельная тестовая машина (или тестовая среда, возможно, виртуальная машина?) Для развертывания обновления. Как только вы будете удовлетворены производительностью обновления, вы должны вытащить / поместить пакет в свое «развернутое» зеркало (будет локальное зеркало из официальных источников и вторичное зеркало только для обновлений, которые вы хотите развернуть). Затем удаленные машины запускали обновление в заранее установленное время и извлекали его из вашего «развернутого» зеркала на каждую машину, задание cron, состоящее из:

apt-get update && apt-get upgrade --quiet --assume-yes

К сожалению, когда я начал читать подробности, мне показалось, что apt-mirror будет тянуть все виды вещей, а не только те пакеты, которые вам нужны. Итак, я собираюсь отказаться от этой идеи, хотя в этой концепции есть свои достоинства.

Взгляните на clusterssh (apt-get install clusterssh):

$ cssh server1 server2 server3 ...

Не задумываясь об этом раньше, моя первая идея была бы чем-то похожим на то, что предлагает Эйвери, особенно если у вас уже есть тестовая среда.

По сути, вы настраиваете свои производственные машины на автоматическое обновление с вашего собственного локального репо, и вы обновляете это репо только после того, как обновили тестовую среду до новейшей версии того, что вы запускаете.

Apticron плохо масштабируется, он предназначен для работы в довольно небольших средах, но у него есть несколько хороших моментов:

  • Он не просто отправляет вам список, но также и журналы изменений для обновляемых пакетов.
  • Чтобы получить журналы изменений, он загружает пакеты, поэтому при обновлении вам не нужно ждать их загрузки.

Иногда назад я писал низкоуровневую / грязную автоматизацию Ткань скрипт (fabfile) на соответствие аналогичным требованиям, вы можете проверить его по адресу:

https://gist.github.com/lgaggini/2be3c5bb47b8ce9267bd