Подтвердить что ты не робот

Apt-get update и apt-get обновление в Chef

Если package "nginx" в Chef переводится в apt-get install nginx на Ubuntu node, то что можно записать в рецепте шеф-повара, который будет переведен на:

apt-get -y update
apt-get -y upgrade

Не удалось выяснить из apt cookbook.

4b9b3361

Ответ 1

Рецепт default "apt" cookbook по умолчанию будет работать apt-get update, чтобы обеспечить обновление кеша пакета. Мы рекомендуем разместить это в начале списка запуска node, чтобы позже пакеты могли быть установлены с правильными версиями.

Обычно мы не рекомендуем, чтобы пользователи использовали "apt-get upgrade" в рецепте по нескольким причинам.

  • apt-get может обновить пакет с конфликтующей конфигурацией или другими проблемами, которые невозможно устранить без повторного запуска команды или выполнения других команд apt/dpkg вручную.
  • Автоматические обновления всех пакетов в системе могут иметь непреднамеренные побочные эффекты для запущенной системы (крайние случаи много и, возможно, колючие, поэтому я не могу их охватить).

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

package "nginx" do
  action :upgrade
end

Если вы повторно используете кулинарию, которая определяет кулинарию, вы можете написать рецепт, который изменяет действие существующего ресурса, например:

resources("package[nginx]").action(:upgrade)

Метод #resources в рецепте будет искать в коллекции ресурсов указанный ресурс (пакет nginx). Затем отправка метода #action с аргументом :upgrade сообщит Шефу, что действие должно быть обновлено.

Изменить Обновить. Будьте осторожны при выборе пакетов, которые будут автоматически обновлены таким образом. Изменение вверх в пакете может привести к пагубным последствиям для системы. Это особенно верно, если такой пакет выполняет перезапуск служб, которыми он управляет во время сценариев после установки. Знайте свою инфраструктуру и, если сомневаетесь, запустите свой собственный репозиторий пакетов, в котором есть критические пакеты, необходимые для стека приложений.

Ответ 2

Рецепт Apt chef не будет обновляться при каждом прохождении шеф-повара. Атрибут, который управляет этим, называется periodic_update_min_delay и имеет значение 86400 (атрибут следует называть sec_delay). Если следующий файл существует и старше 24 часов, apt обновит кеш.

/var/lib/apt/periodic/update-success-stamp

Также кажется, что рецепт apt (default.rb) включает директиву, чтобы принудительно обновить, которое может вызвать ваш рецепт.

# For other recipes to call to force an update
execute 'apt-get update' do

Если вы это сделаете, вам понадобится not_if, чтобы не запускать его слишком часто, и в этот момент вы могли бы также вручную его вызвать. Я устал от общения с этим и закончил тем, что просто вызвал обновление apt-get в строфе перед моей установкой.

execute "apt-get-update" do
  command "apt-get update"
end

Я подозреваю, что долгосрочное решение для обновлений безопасности - установить задержку обновления на несколько часов.