Один Шеф-Повар, чтобы Управлять Ими Всеми


Я изучаю chef для автоматизации развертывания Magento - как в стандартных вариантах размещения Magento, так и в средах, таких как EC2. Я погуглил и увидел множество рецептов, но ни один из них не кажется мне каноническим. Есть ли какой-то конкретный сценарий шеф-повара, который лучше/лучше всего? Кроме того, если вы уже выполняли развертывания chef с PHP раньше, что вы хотели бы знать, когда начинали?

 10
Author: Alan Storm, 2014-07-03

2 answers

Практически невозможно иметь универсальный набор процедур. Я успешно написал сценарий Bash, который выполняет chef-client запуски в списках хостов, предоставленных knife search. Процедуры выглядят так...

Сервер шеф-повара с открытым исходным кодом 10.18.2 на Ubuntu 12.04 LTS

  1. Инициализировать переменные
  2. Получите хэш последней версии с GitHub для $branch
  3. Отключить мониторинг доступности, чтобы предотвратить оповещения о состоянии HTTP 503
  4. Переключить весь Интернет и служебные хосты в режиме обслуживания
  5. Утилита развертывания
    1. Остановите cron Magento и всех работников Resque
    2. Адресные зависимости файловой системы
    3. Шеф-повар проверяет определенную редакцию как новую версию
    4. Адрес зависимостей Magento (пакеты, модули, файловая система, разрешения)
    5. Обновите все задачи и сценарии cron для автоматизации
    6. Развернуть все модули (композитор)
    7. Очистить кэш с помощью n98-magerun.phar
    8. Выполняйте любые миграции с n98-magerun.phar
    9. Повторно включите Magento cron
    10. Начать переброску работников
  6. Развертывание первого веб-узла
    1. Адресные зависимости файловой системы
    2. Шеф-повар проверяет определенный $revision как новый выпуск
    3. Адрес зависимостей Magento
    4. Развернуть все модули Magento
  7. Отметьте новое развертывание в New Relic
  8. Включить службы мониторинга доступности
  9. Отключить службы балансировки нагрузки для всех других веб-сайтов хосты
  10. Продолжайте развертывание на веб-узлах, последовательно переводя их в оперативный режим
  11. Выполнение процедур шеф-повара для хостов поиска

Источник: https://gist.github.com/parhamr/6177160#file-2-deployment

 6
Author: parhamr, 2014-07-03 23:13:01

Вот как Я подошел к этой области, играя роль хочу быть системным администратором/разработчиком. Большинство нижеследующих будут просто общими принципами, которым я стараюсь следовать, а не конкретными поварами.

В итоге я пошел с Марионеткой, потому что в то время я обнаружил, что у меня больше ресурсов, и мне было легче их подобрать.

Я просмотрел различные готовые модули, доступные для таких вещей, как apache, php5 и т.д. Многие из них, казалось, делали намного больше, чем мне было нужно, и были такими незнакомый с платформой, я не доверял тому, что происходило. Я решил, что мне будет проще просто определить, что мне нужно сделать для каждого типа узлов.

Я начал процесс с подготовки локальной среды разработки команды (vargrant + виртуальная коробка). Для каждой службы/компонента я создал модуль: php5, apache2, redis, mysql и т.д.

Как только среда разработки стала стабильной/рабочей, я начал создавать среду контроля качества. Я определил общие типы узлов для Интернета серверы, redis, лак и т.д. который повторно использовал те же модули, что и dev. Как только это было сделано, постановка и производство нуждались в минимальных изменениях, чтобы начать работу.

Когда вы просматриваете и пишете свои рецепты/шаблоны, вам следует подумать о том, как их можно использовать повторно/обобщить. Не используйте жесткий код таких вещей, как пути или пользователи/группы, которые могут меняться между дистрибутивами/проектами/средами. Поскольку вы рассматриваете обобщенный подход, я бы предположил, что придется столкнуться с большим препятствием различия между распределениями *nix.

Самое главное, что сохранить просто. Автоматизируйте/стандартизируйте наиболее важные/трудоемкие части среды. Повторять, развиваться.

 4
Author: beeplogic, 2014-07-03 21:18:47