Один Шеф-Повар, чтобы Управлять Ими Всеми
Я изучаю chef для автоматизации развертывания Magento - как в стандартных вариантах размещения Magento, так и в средах, таких как EC2. Я погуглил и увидел множество рецептов, но ни один из них не кажется мне каноническим. Есть ли какой-то конкретный сценарий шеф-повара, который лучше/лучше всего? Кроме того, если вы уже выполняли развертывания chef с PHP раньше, что вы хотели бы знать, когда начинали?
2 answers
Практически невозможно иметь универсальный набор процедур. Я успешно написал сценарий Bash, который выполняет chef-client
запуски в списках хостов, предоставленных knife search
. Процедуры выглядят так...
Сервер шеф-повара с открытым исходным кодом 10.18.2 на Ubuntu 12.04 LTS
- Инициализировать переменные
- Получите хэш последней версии с GitHub для
$branch
- Отключить мониторинг доступности, чтобы предотвратить оповещения о состоянии HTTP 503
- Переключить весь Интернет и служебные хосты в режиме обслуживания
- Утилита развертывания
- Остановите cron Magento и всех работников Resque
- Адресные зависимости файловой системы
- Шеф-повар проверяет определенную редакцию как новую версию
- Адрес зависимостей Magento (пакеты, модули, файловая система, разрешения)
- Обновите все задачи и сценарии cron для автоматизации
- Развернуть все модули (композитор)
- Очистить кэш с помощью
n98-magerun.phar
- Выполняйте любые миграции с
n98-magerun.phar
- Повторно включите Magento cron
- Начать переброску работников
- Развертывание первого веб-узла
- Адресные зависимости файловой системы
- Шеф-повар проверяет определенный
$revision
как новый выпуск - Адрес зависимостей Magento
- Развернуть все модули Magento
- Отметьте новое развертывание в New Relic
- Включить службы мониторинга доступности
- Отключить службы балансировки нагрузки для всех других веб-сайтов хосты
- Продолжайте развертывание на веб-узлах, последовательно переводя их в оперативный режим
- Выполнение процедур шеф-повара для хостов поиска
Источник: https://gist.github.com/parhamr/6177160#file-2-deployment
Вот как Я подошел к этой области, играя роль хочу быть системным администратором/разработчиком. Большинство нижеследующих будут просто общими принципами, которым я стараюсь следовать, а не конкретными поварами.
В итоге я пошел с Марионеткой, потому что в то время я обнаружил, что у меня больше ресурсов, и мне было легче их подобрать.
Я просмотрел различные готовые модули, доступные для таких вещей, как apache, php5 и т.д. Многие из них, казалось, делали намного больше, чем мне было нужно, и были такими незнакомый с платформой, я не доверял тому, что происходило. Я решил, что мне будет проще просто определить, что мне нужно сделать для каждого типа узлов.
Я начал процесс с подготовки локальной среды разработки команды (vargrant + виртуальная коробка). Для каждой службы/компонента я создал модуль: php5, apache2, redis, mysql и т.д.
Как только среда разработки стала стабильной/рабочей, я начал создавать среду контроля качества. Я определил общие типы узлов для Интернета серверы, redis, лак и т.д. который повторно использовал те же модули, что и dev. Как только это было сделано, постановка и производство нуждались в минимальных изменениях, чтобы начать работу.
Когда вы просматриваете и пишете свои рецепты/шаблоны, вам следует подумать о том, как их можно использовать повторно/обобщить. Не используйте жесткий код таких вещей, как пути или пользователи/группы, которые могут меняться между дистрибутивами/проектами/средами. Поскольку вы рассматриваете обобщенный подход, я бы предположил, что придется столкнуться с большим препятствием различия между распределениями *nix.
Самое главное, что сохранить просто. Автоматизируйте/стандартизируйте наиболее важные/трудоемкие части среды. Повторять, развиваться.