Pull to refresh

Администрируем сервера через единую консоль

Reading time4 min
Views34K
Всем привет!

Давно собирался написать на Хабре, но все как-то откладывал. Но вот недавно прочитал пару статей (раз, два) и понял, что надо взять себя в руки. Это мой первый пост на Хабре, надеюсь, что он будет удачный.

Logo

Начало


Начнем с того, что я работаю системным администратором и немного далек от программирования, но часто пишу всякие скрипты, которые облегчают повседневную работу. Часто приходится решать однотипные задачи на серверах, например, открыть порт для списка ip на всех серверах или проверить состояния службы, проверить, на каких серверах разрешен вход для конкретного пользователя и т.д. Список однотипных задач велик, и я думаю, что многие администраторы знакомы с ними.

Проба пера


Как только количество серверов перевалило за критическую отметку, у меня возник вопрос: как всем этим управлять и не тратить много времени на это. Понятно, что заходить на сервера по RDP\SSH и выполнять там одинаковые команды — это не по фэншую.

Беглый анализ показал, что для управления Windows серверами лучше всего подходит Powershell. Это стало поводом для его изучения. Для начала был написан простой скрипт, который позволял подключаться к Windows серверам и выполнять там скрипты и команды. В достаточно короткий промежуток времени этот скрипт был модернизирован и стал более-менее пригоден для выполнения повседневных задач. Это позволило значительно упростить работу. Однако наряду с этим возникали и трудности: приходилось каждый раз редактировать текстовый файл со списком серверов, чтобы выполнять команды только на нужных серверах. Так же было неудобно хранить готовые скрипты для выполнения. Кроме этого, хотелось сделать что-то универсальное и легкое в использовании. Тут пригодился небольшой опыт программирования на PHP. Идея была проста — прикрутить скрипт к WEB интерфейсу и сделать его рабочим для себя и коллег. Был поднят Denwer на рабочем компьютере и работа закипела.

Через небольшое время появился первый прототип. Теперь можно было вводить команды непосредственно в браузере и перечислять сервера «через запятую». Результат выполнения так же отображался в браузере. Спустя небольшой промежуток времени появились отдельные функции по управлению процессами и службами. Сайтом начали пользоваться коллеги, стали поступать новые идеи.

Версия 2


Как вы понимаете, речи о дизайне и «юзабилити» не шло. Это был просто набор линков, окошек ввода и вывода результата. Минимальная обработка ошибок. Кроме всего, я достаточно быстро понял, что сайт является не только удобством, но и несет в себе угрозу – не было никакого контроля за выполнением команд через сайт, не велось никаких логов (логи Apache не берем в расчет). Любой, кто знал адрес, мог легко подключится и выполнить любые команды, вплоть до выключения серверов и удаления с них данных. Авторизации на сайте не было. При этом не надо было знать ни логинов, ни паролей от серверов. Достаточно было ввести имя сервера(ов) и команду, остальное сайт делал сам. Справедливости ради надо сказать, что сайт находился на моем рабочем компе и доступа извне не было, но это не особо грело душу.

В таком состоянии сайт проработал недолго и было принято решение его немного переделать. Так появилась вторая версия сайта. Была добавлена авторизация через «.htaccess», меню, появился список «часто используемых скриптов», появился первый вариант «движка». Так же стали появляться узкоспециализированные функции, связанные со спецификой работы компании. Сайт «переехал» на сервер, под нормальную связку Apache\PHP\MySQL. Ниже скрины от второй версии.

Скриншоты
Service
1. Работа со службами

Help
2. Часто используемые скрипты

Run command
3. Выполнить скрипт


Версия 3


На следующем этапе возникла необходимость разграничить доступ пользователям на разные сервера. Для простоты решения была поднята копия сайта с другим набором серверов. На тот момент этого было достаточно. Так появилась идея сделать нормальную авторизацию с разграничением прав.
Это послужило толчком для разработки третьей версии. При ее написании были учтены все проблемы и пожелания, имеющиеся на тот момент. В результате был модернизирован движок, написана своя авторизация, появился раздел админки (управления пользователями и доступными серверами), добавились недостающие разделы. На данный момент сайт работает на этой версии более года и обладает следующими возможностями:

  • Работа со службами
  • Работа с процессами
  • Удаленная командная строка (возможность сохранения скриптов)
  • Информация: о железе, списки DB, правила Firewall
  • База знаний
  • Ведения логов
  • Узкоспециализированные функции


Скриншоты
Service
4. Работа со службами

KB
5. База знаний

Run command
6. Выполнить скрипт


Самый главный недостаток сайта – это работа только с Windows серверами. Это обусловлено тем, что подавляющее число серверов, используемых в нашей компании, это Windows сервера. В последнее время количество серверов под управлением Linux стало расти, и встал вопрос о том, как адаптировать работу сайта под них. Чтобы добавить поддержку Linux надо было очень много переписывать код и «ломать» идеологию сайта, чего делать не хотелось. Кроме этого, предпринималось много попыток найти способы выполнять команды Linux из-под Windows в консоли и как-то это прикрутить к скриптовым языкам. Через несколько месяцев решение было найдено.

Проект


Год назад я начал изучать фреймворки и в голове засела окончательная мысль – сделать проект. Проект получил имя: SSC Panel – Smart Server Control Panel. На данный момент заложена основа работы сайта. Есть реализация работы как с Windows, так и с Linux серверами. Реализована админка, удаленная командная строка, есть возможность сохранять скрипты, ведение логов. Пока немного, но, со временем, я надеюсь, их будет больше. Сайт использует движок Kohana 3.3.2, коммерческая тема «SmartAdmin» (не очень хорошо, думаю, что надо менять), для работы с Windows используется Powershell v3 (необходима на сервере, у клиента может быть v2), для работы с Linux используется библиотека Posh-SSH. Как говорится, лучше один раз увидеть:



Планы на будущее


Развивать проект и сделать его профессиональным. Идей для реализации очень много. Что планируется в ближайшее время:
  • Работа с группами серверов
  • Раздел «Информация» (железо, софт, возможно инвентаризация и т.д.)
  • База знаний.
  • Выполнения скриптов по cron.

Это далеко не окончательный список, и он будет расти.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+8
Comments37

Articles

Change theme settings