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

Запуск `apt-get upgrade` с Chef Solo

Я использую Chef Solo для подготовки Vagrant VM на основе окна «Bento» Opscode для Ubuntu 12.04. Когда подготовка завершена и я впервые подключился по SSH, MOTD сообщает мне, что есть пакеты и обновления безопасности. Я тогда бегу sudo apt-get upgrade вручную, что удаляет сообщение при последующих входах в систему. Есть ли способ автоматизировать этот шаг с помощью Chef? Поваренная книга "apt", похоже, не справляется с этим. Все мои поисковые запросы в Google находят информацию только о apt-get update но нет apt-get upgrade. Я мог бы просто выполнить команду apt-get в моем рецепте Chef, но во время процесса обновления на розовом экране появляется псевдо-графический интерфейс, где мне нужно выбрать диски для установки (я думаю, это называется GRUB, я новичок в Ubuntu), и я не уверен, как эту часть можно автоматизировать с помощью Chef.

Я только что сам столкнулся с этой проблемой с chef + vagrant и обнаружил, что у меня работает следующее:

sudo dpkg-reconfigure -plow grub-pc

Это позволяет вам перенастроить grub-pc и выбрать устройство (если есть), на котором вы хотите установить grub. Установка устройства по умолчанию здесь должна позволить обновление, включающее grub, не запрашивать выбор устройства. На этом этапе вы можете создать новый бродячий ящик и использовать его по умолчанию.

или

Чтобы запустить apt-get upgrade / dist-upgrade без запроса, вы можете использовать:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade
  • DEBIAN_FRONTEND=noninteractive использует ответ по умолчанию на любое приглашение.
  • Dpkg::Options::="--force-confdef" гарантирует, что dpkg перезаписывает только файлы конфигурации, которые вы не изменяли
  • Dpkg::Options::="--force-confold" гарантирует, что текущий файл конфигурации не будет перезаписан. Новые файлы конфигурации создаются с суффиксом .dpkg-dist.

Добавление «-y» обойдется с подсказками.

sudo apt-get upgrade -y

Вы должны сделать это до запуска Chef, потому что Chef может кэшировать версии пакетов в базе данных apt.

По словам самого jtimberman, вам не следует запускать apt-get upgrade автоматически.

Рекомендуемый opscode способ обновления - это пакет за пакетом с использованием ресурса пакета.

package "php5-curl" do
  action :upgrade
end

Подробнее читайте Не запускайте apt-get upgrade автоматически в Chef