Если package "nginx"
в Chef переводится в apt-get install nginx
на Ubuntu node, то что можно записать в рецепте шеф-повара, который будет переведен на:
apt-get -y update
apt-get -y upgrade
Не удалось выяснить из apt
cookbook.
Если package "nginx"
в Chef переводится в apt-get install nginx
на Ubuntu node, то что можно записать в рецепте шеф-повара, который будет переведен на:
apt-get -y update
apt-get -y upgrade
Не удалось выяснить из apt
cookbook.
Рецепт 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
сообщит Шефу, что действие должно быть обновлено.
Изменить Обновить. Будьте осторожны при выборе пакетов, которые будут автоматически обновлены таким образом. Изменение вверх в пакете может привести к пагубным последствиям для системы. Это особенно верно, если такой пакет выполняет перезапуск служб, которыми он управляет во время сценариев после установки. Знайте свою инфраструктуру и, если сомневаетесь, запустите свой собственный репозиторий пакетов, в котором есть критические пакеты, необходимые для стека приложений.
Рецепт 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
Я подозреваю, что долгосрочное решение для обновлений безопасности - установить задержку обновления на несколько часов.