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

Управление версиями пакета (и закрепление) с помощью марионетки

У меня есть установка, которой я пытаюсь управлять с помощью марионетки. Для некоторых пакетов мы хотим иметь очень жесткий контроль над версиями. Поскольку они критически важны для нашего приложения, мы обновляем их только после тестирования в нашей тестовой среде и планируем обновления в периоды низкого трафика. Я не хочу, чтобы марионетка обновляла мою базу данных при появлении нового пакета. Я указал версию в своем манифесте марионетки, чтобы предотвратить автоматическое обновление пакета, однако, когда я пошел на создание другого экземпляра с той же конфигурацией, эта версия пакета исчезла из репозитория Ubuntu. Есть только самые свежие.

Для некоторых пакетов я сам упаковывал их в собственное репо, однако упаковка базы данных (postgresql) оказалась слишком накладной.

Какие-нибудь решения или идеи?

Мы используем Ubuntu 12.04.1 LTS.

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

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

Вам следует изучить возможность зеркалирования вышестоящих репозиториев (apt-mirror, rsync) и решить самостоятельно, когда истекает срок действия пакетов. Таким образом, у вас всегда будут под рукой нужные версии.

Что касается PostgreSQL, я могу сказать вам, что пакеты Ubuntu и Debian можно легко и безопасно обновить; нет необходимости придерживаться определенной (старой) версии пакета, опасаясь что-то сломать. Просто убедитесь, что вы контролируете время и место обновления пакетов и последующих перезапусков службы, но это само собой разумеется.