Один шеф-повар управляет ими всеми

10

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

Алан Сторм
источник
2
Хотелось бы знать, что Ansible ( ansible.com/home ) существует.
Рид Бломквист
Некоторые другие альтернативы, если вам интересно, salttack.com и docker.com . Оба выглядят многообещающе, но у меня не было возможности поработать с ними.
биплогия
1
Я экспериментировал с пеплом-
капистрано
Я думаю, что Рид на что-то, Алан re: Ansible. Он не требует установки агента (работает с ssh + keys) на клиентах, это декларативная система, поэтому она идемпотентна, и в целом я обнаружил, что ее использование оставляет мне «делать одно, делать это просто, и делайте это хорошо "в духе юникса по сравнению с более надежными системами, такими как повар, марионетка и соль. Прошло много времени с тех пор, как вы опубликовали это, какие-нибудь обновления о ваших мыслях после работы с шеф-поваром?
Брайан 'BJ' Хоффпауир младший

Ответы:

6

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

Chef Server с открытым исходным кодом 10.18.2 в Ubuntu 12.04 LTS

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

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

parhamr
источник
4

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

Я закончил тем, что пошел с Puppet, потому что я обнаружил, что в то время было больше ресурсов, и мне было легче подобрать его для меня.

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

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

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

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

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

beeplogic
источник