Использование PPA для отправки простых обновлений
Я хочу настроить PPA для отправки простых изменений нескольким сотням машин Ubuntu 12.04 в полевых условиях. Простые изменения означают, что изменения bash-скрипта и обновления файла конфигурации и, возможно, других обновлений программного обеспечения, включая новые установки программного обеспечения, могут быть установлены с помощью apt-get install. Мне пришло в голову несколько вопросов:
- Можно ли использовать PPA для отправки обновлений скрипта?
- Могу ли я настроить клиентские машины так, чтобы они получали обновления только от этого PPA и устанавливали их автоматически, как автоматические обновления? (Конечно, я знаю, что этот вариант возможен, но для этого необходим хороший набор инструментов).
Я знаю, что это широкий вопрос, но ответ с несколькими указателями высоко ценится.
1 ответ
Я хотел сделать то же самое, но я выбрал частный репозиторий, созданный с использованием reprepro
более PPA. Все мои клиенты находятся в одной локальной сети, поэтому для меня это проще. Я думаю, что это вполне работоспособно, независимо от того, используете ли вы PPA или частный репозиторий.
- Изменение существующих файлов конфигурации лучше всего обрабатывается с помощью
dpkg
Диверсии, ИМО.config-package-dev
это благословение для этого. Debian Wiki является хорошей отправной точкой для получения информации об этом. - Добавление файлов сценариев или вашего собственного программного обеспечения не так сложно, упаковав их. Существует множество инструкций по упаковке. Опять же, вики Debian - отличная отправная точка. Сделать бинарные пакеты проще, чем вступление, что будет в случае со скриптами и файлами конфигурации.
- Добавление нового программного обеспечения из других репозиториев можно сделать, сделав их зависимостями ваших пакетов. Укажите точную версию или используйте
apt
закрепление - Автоматические обновления для пользовательских репозиториев уже обработаны: как включить автоматическое автоматическое обновление для любого репозитория? Я не знаю, каким образом сервер может выдавать обновления клиенту. Вы можете рассмотреть
puppet
(с помощьюkick
в) или тому подобное. Или вы можете написать скрипт на сервере, который использует SSH для запуска обновлений на клиенте. Или есть скрипт, который проверяет наличие обновлений при подключении к сети. - Прежде всего, убедитесь, что ваши сценарии обслуживания пакета (
preinst, postinst, prerm, postrm
) являются идемпотентными, и удаление пакета отменяет все изменения. Эти сценарии могут делать много вещей, но не делают ничего, что влияетapt
или жеdkpg
в них. Минимизируйте работу, проделанную в этих сценариях.
В моем случае я использую пакет для настройки LDAP и NTP, добавляю пользовательский глобальный vimrc
Включение общих параметров, внесение различных изменений в конфигурацию (например, включение sudo
для группы, запрет на завершение работы), добавление непривилегированного локального пользователя / группы и т. д. Другой пакет добавляет наш собственный сертификат CA и ключ подписи репозитория и помечает их как доверенных в postinst
сценарий и добавляет запись в sources.list.d
для нашего хранилища.
Я еще не перевел все системы на этот процесс, поэтому пока не могу комментировать его эффективность.