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

Puppet используется для управления конфигурацией, как насчет обновлений программного обеспечения и т. Д.?

Я понимаю, как марионетка помогает настроить серверы и т. Д., Но могли бы вы использовать марионетку для чего-то вроде:

apt-get update && apt-get upgrade

У меня такое ощущение, что ответ отрицательный. Если это так, то какой автоматизированный процесс вы бы предложили для выполнения таких задач?

Скажем, я настраиваю новый экземпляр (агент) для подключения к марионетке, как я могу объединить несколько команд, которые я хочу запустить на сервере, чтобы подготовить его перед подключением к мастеру марионетки? Я надеюсь, что смогу просто записать все команды в файл, а затем каким-то образом запустить этот файл.

Для таких вещей, как:

  1. apt-get update && apt-get upgrade
  2. установить ruby, другие библиотеки
  3. базовые блокировки серверов и т. д.

Что ж, в частности, для APT вы можете настроить множество ежедневных заданий, таких как обновление. Просто посмотри на /etc/cron.daily/apt для списка переменных, которые вы можете настроить, и проверьте страницу руководства для apt.conf как это сделать. Вот что вас интересует больше всего:

#  APT::Periodic::Update-Package-Lists "0";
#  - Do "apt-get update" automatically every n-days (0=disable)
#    
#  APT::Periodic::Download-Upgradeable-Packages "0";
#  - Do "apt-get upgrade --download-only" every n-days (0=disable)
#
#  APT::Periodic::Download-Upgradeable-Packages-Debdelta "1";
#  - Use debdelta-upgrade to download updates if available (0=disable)
#
#  APT::Periodic::Unattended-Upgrade "0";
#  - Run the "unattended-upgrade" security upgrade script 
#    every n-days (0=disabled)
#    Requires the package "unattended-upgrades" and will write
#    a log in /var/log/unattended-upgrades

Что касается обновления системы, воспользуйтесь пакетом unattended-upgrades.

Сказав все это, я предпочитаю использовать Puppet, чтобы контролировать, какие пакеты должны храниться в ensure => latest, или ensure => version, а также управление номерами контактов для различных списков источников и пакетов.

И, я полагаю, один мог используйте такую ​​конфигурацию:

cron { 'upgrade': command => 'apt-get update && apt-get upgrade' }

Вы упомянули, что делаете что-то перед вызывающий марионеточный агент. Вы имеете в виду перед запуском марионеточного агента в первый раз? Если да, то такое решение, как мастер может помочь вам.

Здесь, где я управляю своими виртуальными хостами через Ganeti, у нас есть марионетка, устанавливаемая с помощью instance-debootstrap Ganeti. У нас также есть небольшой скрипт, который мы используем для установки марионетки на старые серверы.

В конце концов, невозможно использовать автоматизированное решение для установки Puppet на существующие серверы, если упомянутое автоматизированное решение уже не установлено. Мы сами предпочитаем сначала установить марионетку, а через нее распространять все остальное.

Я всегда использовал cron-apt для автоматических автоматических обновлений. Его немного неудобно настраивать, но после настройки он работает хорошо. Если вы соедините его с sSMTP, вы сможете получать автоматические обновления и / или уведомления по электронной почте.

В вашей ситуации вы можете использовать Puppet для управления файлами конфигурации cron-apt, sSMTP и crontab.

Вот мой стандарт настройте ... настройте при необходимости.

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

Достаточно легко попросить puppet убедиться, что пакет установлен, но для регулярных обновлений я бы рекомендовал, чтобы puppet добавлял строку в cron root, чтобы сделать $ apt-get update && apt-get upgrade периодически. Если вы хотите иметь точный контроль над применяемыми пакетами, вы можете изучить возможность запуска собственного репозитория apt.