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

Обеспечение непрерывности версий apt-get в Ubuntu

Как мне убедиться, что при запуске apt-get update, apt-get upgrade на 2 разных серверах в разное время я получу одни и те же пакеты? Как мне выполнить автоматическое сопряжение / принудительное исполнение?

(Упрощенный) вариант использования, который я сейчас рассматриваю, - это если я обновлю все до новейшей версии в экземпляре разработки и протестирую все свое настраиваемое программное обеспечение на нем, это займет день или 2. Когда я запускаю обновления / обновления на производственная машина, я хотел бы обновиться только до тех версий, которые я ранее тестировал. Это позволило бы мне создать процесс для более быстрой и безопасной итерации новых патчей, чем я делаю сейчас.

В идеале я люблю использовать метку времени для первого обновления, а затем применять обновления до этой метки при последующих обновлениях. (Но любые другие предложения были бы отличными)

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

1) Создание своего рода локального репозитория APT, в котором обе версии кэшируются. Это репо может вытащить все последние версии при первом запросе, а затем вернуть их только при последующем запросе.

2) Проверить, может ли инструмент управления конфигурацией, такой как ansible / chef, захватить все версии, которые были обновлены при первом запросе, а затем принудительно выполнить второе сканирование для получения этих точных версий.

Спасибо.

Вам нужно запустить собственный репозиторий apt с помощью такого инструмента, как apt-зеркало или метко. С помощью такого простого инструмента, как apt-mirror, вы можете синхронизировать свой репозиторий перед обновлением среды разработки и не синхронизировать его снова, пока вы не обновите свою производственную среду. С помощью более сложного инструмента, такого как aptly, вы можете реализовать этот или более сложные потоки пакетов.

  1. Очистить /var/cache/apt/archives/. Не обязательно, но экономит место и время при копировании в будущем.
  2. В целевой системе выполните обновление, используя -d (только загрузка), чтобы получить пакеты без их применения.
  3. Скопируйте эти файлы в /var/cache/apt/archives/ до ночи обновления окружающей среды.
  4. Запустите обновление на всех системах, используя --no-download, заставляя систему использовать ваши кандидаты на обновление.

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

Метод локального зеркала, о котором упоминает sciurus, будет лучше, если у вас нет полного контроля над вашим локальным зеркалом и вы не хотите гарантировать, что синхронизация не происходит между патчами кластера.