Я бы порекомендовал использовать смесь предварительного заполнения Debian, где вы предоставляете установщику текстовый файл, который отвечает на все вопросы, которые он задает, и Puppet.
Причина использования предварительного отбора, а не FAI, заключается в том, что вам не нужно сначала настраивать изображение и заниматься его обновлением. В итоге вы получите установку, очень похожую на ту, которая была бы у вас, если бы вы сделали все вручную. Когда вы придете к установке нового выпуска, вам придется обновить файл конфигурации с изменениями, а не перестраивать новый образ.
Инструмент управления конфигурацией особенно полезен, когда у вас есть несколько серверов, выполняющих одну и ту же роль, и вы хотите, чтобы они были идентичными, например, кластер веб-серверов. Однако они также могут быть полезны для настройки базовой установки всех серверов. Вы захотите установить определенные пакеты на все ваши серверы, такие как ntpd и MTA. Вы хотите изменить конфигурационный файл на всех ваших серверах. Дополнительным преимуществом является то, что вы можете хранить свои манифесты в чем-то вроде подрывной деятельности и вести учет того, что изменилось на сервере, кто это сделал и почему. Управление конфигурацией также может быть спасением в случае сбоя сервера, и вам необходимо быстро восстановить его. Установите ОС (используя FAI или preseeding), установите Puppet, и все будет готово, как и раньше. Очевидно, вам нужно хранить резервные копии данных.
Управление конфигурацией требует самоотдачи, чтобы убедиться, что вы вносите изменения только с его помощью, и у вас будет предоплата за настройку, но как только вы получите рабочую настройку, вы не пожалеете об этом.
Puppet - более современный из двух упомянутых вами инструментов. Я действительно рекомендую это всем. Конфигурация является декларативным языком и легко создавать конструкции более высокого уровня. Вокруг него также очень большое сообщество, и всегда есть люди, желающие помочь в списке рассылки или на канале IRC.
Я бы порекомендовал CFengine для любой среды, которая имеет более 2-3 блоков и где у вас есть некоторое представление о «шаблонах» или серверах, выполняющих определенные роли.
Зачем? Проще говоря, это уменьшает количество ошибок, у вас есть инструмент, который обеспечит правильность прав доступа к файлам / каталогам в любой среде, а когда вы развернете больше серверов, этот инструмент обрабатывает абсолютно все и никогда не делает ошибок.
Противопоставьте даже опытному системному администратору, развертывающему веб-сервер в конце двенадцатичасовой смены, когда что-то уже пошло не так ... Вероятно, они помнят тот отвратительный маленький файл конфигурации, который нужно поместить в / etc / random / location / foo / bar, иначе приложение молча не сможет сделать что-то довольно важное, например, выставить счет клиентам? :)
Такие инструменты, как CFengine, также являются отличным способом выполнения обновлений безопасности для всей среды. Сброс конфигурации Nagios (NRPE) на все блоки также является пустяком. Если вы имеете дело с пятью ящиками или пять сотен коробок вы будете экономить время с Cfengine.
Вероятно, стоит отметить, что моя среда немного больше, однако я также развернул CFengine для меньших сред, чем вы заметили, отсюда и рекомендация!
Возможно, ваш следующий вопрос будет CFengine против Puppet? Это более сложное решение, и я всегда обращался к CFengine из-за (в первые дни) некоторой незрелости от Puppet, особенно в части регистрации ошибок ... в эти дни я действительно не уверен - есть игра, не видишь? Оглядываясь назад на мои специфические проблемы с Puppet, они были связаны с сертификатом SSL, до сих пор мучительно вспоминают время, которое я потратил 3 часа на диагностику проблем с подключением к серверу <-> клиента в irc.freenode.net/#puppet с некоторыми здоровенными RTFM и RTFS только для поиска ошибка, не будучи зарегистрированным, и Люк сказал: «Ах, это действительно трудно исправить» и никогда не делал. :(
источник
Помимо cfengine и puppet, есть еще и шеф-повар . Я настоятельно рекомендую использовать один из этих инструментов, поскольку все всегда будет развиваться в неожиданных направлениях. Это помогает управлять вещами в централизованном месте.
Важно признать, что есть вероятность, что вы не получите всего, но если вы сможете получить хотя бы 90%, это только начало. Кроме того, это весело и сделает вашу жизнь проще в долгосрочной перспективе. Наконец, это хороший навык - идти вперед.
источник
Я использую cfengine с 5 лет для установки Debian (от woody до lenny в настоящее время). С помощью etch я создаю собственный debian-installer. Благодаря preseed возникает один вопрос: «Какое имя хоста?». После этого cfengine настраивает весь сервер (dns + dhcp с пользователями и паролями dnssec, samba, ntpd, default (Samba), ssh, openvpn, apache vHosts, резервное копирование с помощью rsnapshot на LVM, пользовательские веб-модули и т. Д.).
Даже когда я устанавливаю только один сервер, я использую скрипты cfengine из своего набора инструментов, например:
Мне нравится cfengine, потому что скрипты cf2 читаются человеком.
так что определенно стоит работать с инструментами для автоматического управления конфигурацией.
/ Торстен
источник
Это должно стоить даже для небольшого сайта. Это все о последовательности, как вы растете. И вы знаете, что ваш сайт будет расти. Лучше всего начинать, пока ты еще маленький. Cfengine потрясающий. Особенно версия 3, которая может обрабатывать все менеджеры пакетов по всему полю, и она действительно легкая и безопасная, и она «просто работает». Кукольный просто не доставил то, что требовал. Не пробовал Шеф.
Преимущество cfengine перед остальными заключается в том, что он очень легкий, но на самом деле имеет больше возможностей. Это безопасность, как ssh, а не веб-сертификаты, используемые puppet. Когда я рассказал своему боссу о cfengine, он подумал, что это научная фантастика :) Если вы ищете что-то футуристическое, попробуйте прочитать некоторые исследовательские работы Марка Берджесса. Отличная вещь.
источник
Инструмент номер один, который мне хотелось бы иметь при запуске небольшого сайта, - это «кнопочные» сборки. Это облегчает исправления, обновления и перестройки, что может решить множество других проблем в будущем.
Нет SSH правильно установлен на всех коробках? нет также curl / wget / vim? а как насчет других внутренних инструментов, которые вы хотели бы иметь на каждой коробке?
Централизованное управление вашими серверами - это один из первых инструментов, который вам нужно будет использовать, чтобы облегчить будущие усилия.
источник
Я согласен с каждым здесь. Вы должны начать изучать и настраивать рабочую инфраструктуру, когда вы невелики. Потому что тогда вы готовы, когда вы растете.
В зависимости от того, что вы хотите запустить, я бы выбрал FAI, cfengine и pre-seeding для Debian / Ubuntu. FAI может работать со многими различными инструментами, так что это хорошее начало для любого Debian-подобного дистрибутива. С конфигурацией, управляемой классом FAI (и cfengine), вы можете легко разделить ваши установки на небольшие модули, которые затем вы можете выбрать, какие из них использовать для каждой вашей машины. Таким образом, это будет полезно, даже если у вас много разных машин. Это на самом деле более полезно, так как вы будете документировать свою установку с помощью этих сценариев. А при установке на новую машину вы ничего не забудете.
Да, вы ДОЛЖНЫ иметь несколько машин для тестирования, прежде чем внедрять свои изменения в оперативную установку. Но с помощью сценария настройки, подобного этому, вы не забудете сделать какой-либо шаг в процессе установки.
источник