Помимо нашей внутренней ИТ-инфраструктуры, у нас есть около 500 Linux-машин, на которых размещены наши сервисы для онлайн-мира. Они сгруппированы в несколько кластеров, таких как Database An, Product An, NFS, Backoffice и так далее. Кроме того, они управляются внешним поставщиком в соответствии с нашими спецификациями и требованиями.
Тем не менее, мы сталкиваемся с множеством проблем при (веб-) разработке, развертывании и развертывании программного обеспечения, особенно потому, что среды разработки и промежуточные среды практически не имеют ничего общего с работающими системами (я избавляюсь от неприятных деталей ...) ,
Таким образом, я попытался создать виртуальные машины, как можно точнее скопировать различные живые системы и подготовил их для подключения, например, к базам данных разработки, а не к «реальным» прозрачно для разработчиков (это не так root
). Это работает довольно хорошо, но ...
Мне было интересно, как можно администрировать эти системы удаленно и навалом ? Есть ли семейство программного обеспечения, о котором я не знаю? Или, по крайней мере, некоторые методы или принципы, с которыми нужно быть знакомым?
Мы предоставим каждому разработчику кучу изображений для локального запуска (VirtualBox). Отдел обеспечения качества получит виртуальные кластеры (XEN или Hyper-V). Если мне нужно предоставить дополнительный серверный модуль, перенаправить новое соединение с базой данных или просто обновить все, что предоставляет менеджер пакетов ... как я могу это сделать без необходимости входить в каждую систему и / или попросить моих коллег скачать и запустить какой-нибудь fixture-скрипт?
Я считаю, что есть много решений. Ну, как-то я слишком глуп, чтобы вводить правильные ключевые слова в поисковые системы ... Или эта проблема не так тривиальна, как кажется?
Для записи:
- Почти все системы работают под Debian GNU / Linux 6.x "squeeze"
- Ни один разработчик не вынужден использовать конкретную ОС на своей рабочей станции
- Конечно, бюджет ограничен, но не слишком мал, чтобы покупать проприетарное программное обеспечение.
- Решение с участием нашего вышеупомянутого поставщика является предпочтительным
cucumber-puppet
. Конечно, вы можете разрабатывать / расширять свои собственные фреймворки, используя существующие компоненты, но это звучит так, что в настоящее время в OP ничего нет, и если вы начинаете с нуля, я думаю, что лучше использовать существующий фреймворк.Ульрих уже дал ответ относительно развертывания программного обеспечения и автоматической настройки сервера.
Принципы этого
Вы попросили удобный инструмент для управления массами серверов - мой личный фаворит это cluster-ssh (
cssh
). Введите один раз и внесите изменения на многих серверах одновременно.Если вы обнаружите проблему и исправите ее, устраните ее:
Если вы сталкиваетесь с огромным количеством серверов для исправления, это процесс, который должен быть хорошо задокументирован, и в конце другая группа должна проверить, было ли исправление полностью применено.
Мы используем Mantis (с открытым исходным кодом, PHP) для этой цели.
источник
Я управляю около 30 продуктами и несколькими сотнями серверов в разных странах. Я менеджер по настройке программного обеспечения, поэтому у меня нет корневого доступа (по замыслу), я не касаюсь баз данных или их серверов (опять же, по замыслу), и мне приходится прыгать много раз из-за корпоративной безопасности. Но я управляю конфигурациями в тестовом, промежуточном и производственном режимах, включая ссылки на базы данных и изменения. У меня есть несколько сценариев , которые выходят к серверам с помощью комбинаций
ssh
,python
и сценариев оболочки.Основные вещи, о которых стоит подумать:
ssh
Достаточно ли и из центрального безопасного места?ssh
удаленного запуска? Можете ли вы написать сценарий с помощьюexpect
или просто из командной строки?VirtualBox предоставляет множество инструментов командной строки, которые вы можете администрировать через систему
ssh
или системы, какpuppet
упоминает Ульрих.источник