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

Версии пакетов на шеф-поваре

Мы развертываем многоузловую среду PHP с помощью chef.

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

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

package 'php' do
  action :install
  version '5.3.27'
end

Какие шаги мне предпринять, когда выйдет версия 5.3.28?

Лучшая практика для шеф-повара - всегда начинать с одного и того же состояния готовности. Если вы выполняете развертывание в облаке, я бы создал совершенно новую виртуальную машину и развернул PHP с нуля.

Если у вас нет такой роскоши, то вы находитесь в ситуации, когда вам нужно поддерживать два известных начальных состояния. (1) PHP не установлен и (2) установлена ​​старая версия PHP.

Вы не можете связать их вместе там, где вы всегда сначала устанавливаете 5.3.27, потому что это разрушает идемпотентность этого ресурса.

Я бы порекомендовал выполнить шаг вручную, на котором вы удалите 5.3.27 и начнете чистку с установки 5.3.28 chef.

Наконец, я бы рекомендовал как можно больше избегать использования ролей повара. Они не могут быть версированы и затрудняют обновление, когда у вас есть и разработка, и производственная система, разделяющая одну и ту же роль (т.е. как мне изменить роль, не влияя на обе среды?) Вместо этого рассмотрите возможность использования родительской поваренной книги для оркестрации.