Массовое/удалённое администрирование Linux

Массовое/удалённое администрирование Linux

Помимо нашей внутренней ИТ-инфраструктуры, у нас есть около 500 машин Linux, на которых размещены наши сервисы для онлайн-мира. Они сгруппированы в несколько кластеров, таких как Database An, Product An, NFS, Backoffice и т. д. Более того, они администрируются внешним провайдером в соответствии с нашими спецификациями и требованиями.

Однако мы сталкиваемся с множеством проблем во время разработки, развертывания и внедрения (веб-) программного обеспечения, особенно потому, что среды разработки и промежуточного тестирования не имеют почти ничего общего с реальными системами (я опущу неприятные подробности).

Таким образом, я попытался создать виртуальные машины, скопировал различные живые системы как можно точнее и подготовил их для подключения, например, к базам данных разработки вместо "реальных" прозрачно для разработчиков (они не являются таковыми root). Это работает довольно хорошо, но...

Мне было интересно, как можно было бы администрировать эти системы удаленно иоптом? Есть ли какое-то семейство программного обеспечения, о котором я не знаю? Или, по крайней мере, какие-то методы или принципы, с которыми следует быть знакомым?

Мы бы предоставили каждому разработчику набор образов для локального запуска (VirtualBox). Отдел контроля качества получил бы виртуальные кластеры (XEN или Hyper-V). Если мне нужно предоставить дополнительный серверный модуль, перенаправить новое соединение с базой данных или просто обновить все, что предоставляет менеджер пакетов... как бы я мог это сделать, не будучи вынужденным входить в каждую систему и/или просить коллег загрузить и запустить какой-нибудь скрипт-фикстуру?

Я считаю, что есть много решений. Ну, я как-то слишком глуп, чтобы ввести правильные ключевые слова в поисковики... Или эта проблема не так тривиальна, как кажется?

Для записи:

  • Почти все системы работают под управлением Debian GNU/Linux 6.x "squeeze"
  • Ни один разработчик не обязан использовать определенную ОС на своей рабочей станции.
  • Бюджет, конечно, ограничен, но не настолько, чтобы покупать фирменное ПО.
  • Предпочтительным является решение, в котором будет задействован наш вышеупомянутый поставщик.

решение1

Это зависит от того, что именно вам нужно и что вы ищете. Но в целом существует множество решений для "управление конфигурациейнравиться:

  1. кукольный
  2. шеф-повар
  3. cfengine
  4. ansible
  5. соль

и т. д. Я бы лично рекомендовал puppet, так как у него большое сообщество и много внешних рецептов. Это позволяет вам автоматически настраивать и управлять системами. Если вы объедините это с собственными репозиториями и автоматическими обновлениями через, например,unattended-upgradesВы можете автоматически обновлять систему.

Другое решение — просто предоставить свои собственные пакеты, такие как company-baseи т. д., которые автоматически зависят от необходимого программного обеспечения и могут автоматически настраивать вашу систему.

Вам также следует рассмотреть автоматизированные развертывания (barebone и виртуализированные). Если вы объедините это с управлением конфигурацией или собственным репозиторием, вы сможете легко автоматизировать и переустанавливать свои системы. Если вы хотите начать с автоматизированной установки, посмотритеtheformanкоторый поддерживает libvirt, а также bare bone установки и имеет встроенную поддержку puppet. Если вы хотите сделать это самостоятельно, вы можете посмотретькикстарт (Redhat и др.) или "preseeding" для автоматической настройки вашей системы. Для Debian вы также можете использовать что-то вродедебутстрапили обертка с именемgrml-debootstrapподдержка виртуализированных образов.

Чтобы помочь с предоставлением образов VirtualBox для вашего разработчика, взгляните набродягаон позволяет автоматизировать создание виртуализированных систем с помощью VirtualBox, поддерживающего скрипты chef, puppet и shell для настройки вашей виртуальной среды.

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

Для ключевых слов Google посмотрите devops, configuration management, it automationи server orchestration.

Короче говоря, автоматизируйте все, что возможно, и даже не думайте делать что-то вручную.

решение2

Ульрих уже дал ответ относительно развертывания программного обеспечения и автоматической настройки сервера.

Принципы, лежащие в основе этого, следующие:

  • Определите, как должны выглядеть ваши серверы — это включает в себя общее программное обеспечение, которое устанавливается по умолчанию, схему разбиения на разделы и структуру файловой системы.
  • Производственные, промежуточные, тестовые и серверы разработки не должны отличаться по этим базовым стандартам (иначе вы столкнетесь с проблемами позже, как это уже было).
  • Используйте надлежащее управление изменениями для документирования ВСЕХ внесенных вами изменений (включая незначительные изменения в одну строку в любой конфигурации)
  • Всегда ли вы сначала вносите изменения в тестирование, затем в разработку, затем в этап подготовки и в последнюю очередь в производство?

Вы просили удобный инструмент для управления массами серверов - мой личный фаворит - cluster-ssh ( cssh). Введите один раз и вносите изменения на многих серверах одновременно.

Если вы обнаружили проблему и у вас есть решение, которое ее устраняет:

  1. Примените исправление к Test/Dev/Staging/Prod (см. выше), если оно действительно работает
  2. Примените исправление к вашим виртуальным шаблонам, чтобы в будущих клонах виртуальных машин не было этой ошибки.
  3. Примените исправление к вашему физическому процессу установки (kickstart/autoyast/что угодно)
  4. Применить исправление ко ВСЕМ серверам

Если вам предстоит исправить множество серверов, этот процесс должен быть хорошо документирован, а в конце другая команда должна проверить, полностью ли применено исправление.

Для этой цели мы используем Mantis (с открытым исходным кодом, PHP).

решение3

Я управляю примерно 30 продуктами и несколькими сотнями серверов в разных странах. Я менеджер по конфигурации программного обеспечения, поэтому у меня нет прав root (по замыслу), я не трогаю базы данных или их серверы (опять же, по замыслу) и мне приходится много прыгать из-за корпоративной безопасности. Но я управляю конфигурациями в тестировании, подготовке и производстве, включая ссылки на базы данных и изменения. У меня есть ряд скриптов, которые отправляются на серверы с помощью комбинаций sshи pythonскриптов оболочки.

Основное, о чем следует подумать:

  1. Какие взаимодействия вы собираетесь осуществлять с вашими серверами? Просто загрузка файлов? Запуск программ командной строки? Запуск удаленных X-клиентов?
  2. Какой уровень безопасности необходим для доступа к этим серверам? Брандмауэры, защищенные сети, vpn? sshДостаточно ли и из центрального защищенного места?
  3. Насколько можно автоматизировать каждый сервер? Можно ли установить программу на каждом сервере и запустить ее, или нужно транслировать программу через что-то вроде sshудаленного запуска? Можно ли написать скрипт expectили просто вызвать из командной строки?

VirtualBox предоставляет множество инструментов командной строки, которые можно администрировать с помощью таких sshсистем, puppetкак упоминает Ульрих.

решение4

За последние пару лет появился новый набор минималистских систем, которые фокусируются на возможности создания конфигурации с использованием скриптов. Поскольку они являются фреймворками для написания скриптов, они, как правило, преуспевают в задачах, требующих последовательности.

pyinfra

pyinfra автоматизирует инфраструктуру очень быстро в больших масштабах. Его можно использовать для выполнения команд ad hoc, развертывания служб, управления конфигурацией и многого другого.

http://pyinfra.com/

Дзюдо

Простая оркестровка и управление конфигурацией

http://github.com/rollcat/judo

rset(1) : pln(5)

Настройте системы с использованием любого языка сценариев

http://scriptedconfiguration.org/

Связанный контент