У нас есть> 20 отдельных приложений, которые мы поддерживаем. Большинство из них не видят изменений чаще, чем пару раз в год. Мы думаем, что повар нам поможет.
Я пытаюсь найти золотую середину между ручной настройкой и автоматизацией. У меня есть два довольно хороших вопроса:
1) Разумнее ли настроить один сервер шеф-повара с кулинарными книгами и ролями для каждого из наших приложений? Или мы должны изолировать каждый проект и иметь шеф-сервер для каждого приложения?
2) (Если у нас несколько шеф-серверов) Как мне управлять несколькими шеф-серверами? С другим шеф-поваром? шеф-соло?
Я вижу много статей, в которых рассказывается, как настроить chef или описываются функции, но я не видел действительно хорошей статьи, в которой рассказывалось бы, как кто-то на самом деле использует Chef в средне-крупной производственной среде. Некоторые советы в этом направлении могут быть полезны.
Спасибо!
Главный вопрос немного сложный. Беглый ответ на вопрос, насколько абстракция - это «не слишком много, но и не слишком мало». Чуть более серьезно, это то, над чем вам действительно нужно работать, так как это зависит от множества факторов.
Хорошим первым шагом было бы создание конфигурации «базового узла» (атрибуты роли и среды), в которой все ваши узлы будут управляться Chef. Это может включать в себя множество существующих кулинарных книг сообщества, таких как:
На этом этапе ваши приложения будут настроены и установлены вручную поверх базовых узлов.
Теперь у вас должно быть лучшее представление о том, как работает Chef, чтобы вы могли начать думать о том, как будут выглядеть поваренные книги для конкретной предметной области. Продолжайте работать снизу вверх и напишите кулинарные книги для установки пакетов, необходимых для ваших приложений, и используйте атрибуты и пакеты данных для их настройки. Между 20 упомянутыми вами приложениями может быть некоторая общность (например, в основном это приложения Rails), которые вы можете вынести в общий набор рецептов.
Вы хорошо понимаете, что нужно найти нечто среднее между ручной настройкой и автоматизацией. Одна из ловушек, в которую я попался, когда начинал работать с Chef, заключалась в том, чтобы попытаться максимально автоматизировать. В конечном итоге это превращается в кошмар угловых случаев и странных ошибок, которые исправляются путем перезапуска службы вручную или перезагрузки узла. Не весело поддерживать и отлаживать. Сейчас я стараюсь максимально использовать ресурсы пакета, файла и шаблона.
Наличие 100 ролей звучит немного чрезмерно, но я не знаю более подробной информации о вашей ситуации. Я обычно работаю с более общими ролями, такими как «Apache-Server» или «RabbitMQ-Server», а затем использую различные комбинации атрибутов, пакетов данных и более конкретных ролей для персонализации каждого узла.