LINUX.ORG.RU

ServantJS - плафторма для централизованного управления приложениями

 , , , ,


0

2

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

Платформа состоит из сервера, агента, панели управления и rest api сервера.

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

Из готовых модулей сейчас есть:

  • Управление HAProxy
  • Управление NGINX
  • Мониторинг (находится в стадии beta. Из функционала пока что готов сбор метрик. Графики в интерфейсной части будут позже)

Проект является открытым. Пишется он на Node.JS платформе.

Весь проект расположен на github'е. Сейчас готовы wiki разделы для сервера и агента. Для панели управления и api сервера есть общее описание в README. По поводу установки, настройки вы все найдете в описаниях и wiki разделах. Если возникнут вопросы, оставляйте их здесь.

Платформа тестировалась на linux серверах и mac os x. Поэтому 100% работоспособность на остальных не гарантирую.

Мне хотелось бы получить отзывы, чтобы понять нужно ли это вообще кому-нибудь.

Собственно сам проект - https://github.com/ServantJS

З.Ы. Надеюсь я разместил тему в правильном разделе.

Вот вкратце впечатление:

1. Не понятно что это и зачем. Те объяснения что видел скатываются в технические подробности вместо того чтобы объяснить какие проблемы юзера решит этот софт.

2. Ридми на русском - такие вещи сходу вызывают подозрение в квалификации автора :)

3. Документацию можно было бы выложить на gh-pages. Мне было лень клонить реп чтобы ее почитать.

4. Сравнение с другим софтом тоже странное. Не очень понятное, и не ясно почему сравнивалось с чифом/пупетом а не каким-нибудь докером/консулом.

В общем, я бы через пол минуты свалил. Но т.к. ты написал на лоре, я честно пытался въехать минут пять перед тем как свалить.

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

Vit ★★★★★
()
Ответ на: комментарий от Vit

1. Проект решает проблемы, когда у вас есть несколько серверов, которые должны поддерживать одинаковый набор настроек для каких-либо приложений, например nginx, haproxy в данном случае. Может решать проблемы по ведение в одном месте всех настроек по тем же nginx, haproxy (ссылаюсь на nginx и haproxy из той причины, что для них есть модули). Проект автоматизирует процесс заведения новых конфигураций, например в тех случаях, когда у вас используется nginx для проксирования нескольких виртуальных серверов, аля ваши клиенты и т.п, то есть вы можете создавать конфиги из шаблонов, указывая лишь динамические данные, например IP, порт, доменное имя. Также проект предоставляет собственный интерфейс по конфигурированию, чтобы не лезть по ssh на сервер и менять настройки для поддерживаемых им приложений. Можно сказать, что он схож с Ajenti, только рассчитан на управление несколькими серверами, а не одним. 2. Понимаю, на github'е немодно писать на русском языке. Само собой потом все переведу на англ, если пойму, что проект того стоит. Просто пока что решил начать хоть с чего, хоть как-то заявить сообществу о своем проекте. 3. Документацию можно читать в удобном виде на wiki, имхо. 4. Чиев и паппет грубо говоря призваны для автоматического развертывания чего-нибудь, тех же настроек для ОС и т.п. С докером сравнивать не могу, так как мой проект не создает конфиги и\или не выполняет команды в какой-либо песочнице (контейнере).

Надеюсь, у меня получилось внести побольше ясности о своем проекте :)

LostCoast
() автор топика
Ответ на: комментарий от LostCoast

Надеюсь, у меня получилось внести побольше ясности о своем проекте :)

Посмотри свой пост, там все параграфы в один слились :)

https://github.com/ServantJS/servantjs-api-server#servantjs-api-server - вот тут ссылка на сорец вместо wiki/gh-pages.

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

То что без песочниц - я б не назвал преимуществом в нынешнее время. Ну и нужны какие-то веские аргументы, чтобы разучивать и внедрять твое апи вместо более распространенных.

Vit ★★★★★
()
Ответ на: комментарий от LostCoast

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

А вот и нет. Puppet, Chef и прочие оркестраторы вполне могут управлять состоянием и конфигурацией сервисов. В случае Ansible еще и всякая нодажс не потребуется на клиентах (да и вообще где-либо).

Хорошо что вы делаете то, что вам интересно, но на первый взгляд это изобретение очередного велосипеда с фиксом фатального недостатка.

alozovskoy ★★★★★
()
Ответ на: комментарий от Vit

вот тут ссылка на сорец вместо wiki/gh-pages.

В первом посте я сообщил о том, что wiki страницы есть для только для сервера и агента.

Еще на странице организации можно добавить какую-то ссылку, на вики или на презентацию.

Видимо, я поспешил с выкладыванием проекта обществу, поэтому понимаю кучу возникающих вопросов и непонимания. Буду исправляться :)

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

Один из аргументов может быть следующий: те же Chef и Puppet требуют изучения их языков для написания рецептов или скриптов на ruby. Моя же система нацелена на предоставление пользовательского интерфейса для управления теми же конфигурациями без надобности в знание ЯП (язык программирования).

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

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

LostCoast
() автор топика
Ответ на: комментарий от alozovskoy

Хорошо что вы делаете то, что вам интересно, но на первый взгляд это изобретение очередного велосипеда с фиксом фатального недостатка.

Да вы правы. Делаю проект в свое удовольствие, который помогает повышать скилл в node.js.

То, что на первый взгляд кажется велосипедом, это от того, что вы складываете свое впечатление от написанного мной описания, и я вас прекрасно понимаю. Так как мой проект это не из серии «такого вы нигде не видели». Проект решает определенную задачу, которая не является новой и неизведанной.

Быть может, если вы попробуете развернуть и настроить систему, ваше мнение изменится.

LostCoast
() автор топика

госпади..кто вас учил маркетингу? Проект может и кому-то интересен и вам очевидно небезразличен, но такая подача на ЛОР(впрочем и везде) порождает эпичное «ненужно»

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

госпади..кто вас учил маркетингу?

Это мой первый open source проект, поэтому я тяжело себе представляю с чего вообще люди начинают и как подают свои личные проекты. Если у вас есть примеры, можете поделиться ими? Маркетингу никто меня не учил, поэтому я пытаюсь хоть как-то представить проект.

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

LostCoast
() автор топика
Ответ на: комментарий от alozovskoy

Ты свой рот-то закрой, ага?!

anonymous
()

Я подготовил демо стенд на скорую руку. Думаю, так будет правильнее. На демо стенде агент на все задания отвечает статусом «ОК» и не выполняет реальных команд, чтобы тестовая виртуалка прожила подольше и ее никто не сломал :)

Данные для входа:

url - http://185.71.65.232:8020/

login: root@root.com

password: 123

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

LostCoast
() автор топика
Ответ на: комментарий от LostCoast

http://185.71.65.232:8020/users

Error: Failed to lookup view "5xx" in views directory "/usr/local/servantjs/panel/views"
   at EventEmitter.render (/usr/local/servantjs/panel/node_modules/express/lib/application.js:579:17)
   at ServerResponse.render (/usr/local/servantjs/panel/node_modules/express/lib/response.js:960:7)
   at /usr/local/servantjs/panel/app.js:208:29
   at Layer.handle_error (/usr/local/servantjs/panel/node_modules/express/lib/router/layer.js:71:5)
   at trim_prefix (/usr/local/servantjs/panel/node_modules/express/lib/router/index.js:310:13)
   at /usr/local/servantjs/panel/node_modules/express/lib/router/index.js:280:7
   at Function.process_params (/usr/local/servantjs/panel/node_modules/express/lib/router/index.js:330:12)
   at next (/usr/local/servantjs/panel/node_modules/express/lib/router/index.js:271:10)
   at Layer.handle_error (/usr/local/servantjs/panel/node_modules/express/lib/router/layer.js:67:12)
   at trim_prefix (/usr/local/servantjs/panel/node_modules/express/lib/router/index.js:310:13)
   at /usr/local/servantjs/panel/node_modules/express/lib/router/index.js:280:7
   at Function.process_params (/usr/local/servantjs/panel/node_modules/express/lib/router/index.js:330:12)
   at next (/usr/local/servantjs/panel/node_modules/express/lib/router/index.js:271:10)
   at Layer.handle_error (/usr/local/servantjs/panel/node_modules/express/lib/router/layer.js:67:12)
   at trim_prefix (/usr/local/servantjs/panel/node_modules/express/lib/router/index.js:310:13)
   at /usr/local/servantjs/panel/node_modules/express/lib/router/index.js:280:7
   at Function.process_params (/usr/local/servantjs/panel/node_modules/express/lib/router/index.js:330:12)
   at next (/usr/local/servantjs/panel/node_modules/express/lib/router/index.js:271:10)
   at Layer.handle_error (/usr/local/servantjs/panel/node_modules/express/lib/router/layer.js:67:12)
   at trim_prefix (/usr/local/servantjs/panel/node_modules/express/lib/router/index.js:310:13)
   at /usr/local/servantjs/panel/node_modules/express/lib/router/index.js:280:7
   at Function.process_params (/usr/local/servantjs/panel/node_modules/express/lib/router/index.js:330:12)
EXL ★★★★★
()
Ответ на: комментарий от EXL

Извиняюсь, интерфейс мультиязычный. Пока что язык определяется автоматически по языку браузера. Сейчас все Ок должно быть. Пробуйте.

LostCoast
() автор топика
Ответ на: комментарий от LostCoast

с чего вообще люди начинают и как подают свои личные проекты

Начни с сырцов/примеров/скриншотов. Остальные слова не нужны, точнее будут нужны, когда твой проект станет всем известен, тогда можешь добавить маркетинговый булшит. А сейчас нужны просто сырцы/примеры/скриншоты для потенциальных пользователей-специалистов.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 2)
Ответ на: комментарий от foror

Начни с сырцов/примеров/скриншотов.

Спасибо за совет. Попробую презентовавать свой проект с точки зрения пользователя.

ServantJS изначально является платформой, общее назначение которой - доставка пакетов заданий от сервера к агенту/ам. Агенты могут объединяться в группы, чтобы задания можно было назначать группе. Назначение заданий на группу выгодно в том случае, когда необходимо поддерживать одинаковое состояние агентов.

На данный момент реализованы два модуля:

1. NGINX модуль. Предназначен для управления конфиг файлами. Конфиг файлы можно создавать как на основе шаблонов, так и произвольно. Каждый шаблон содержит специальные переменные (администратор задает их сам при создание), которые будут заменены на значения, указанные при создание нового конфига. Также, можно создавать группы для конфигов. Особенность группы заключается в том, что для нее указывается директория, в которой будут создаваться конфиг файлы.

Скриншоты:

Список конфигов - http://dl2.joxi.net/drive/2016/09/22/0007/3463/523655/55/d355fb76d7.jpg

Создание групп - http://dl2.joxi.net/drive/2016/10/03/0007/3463/523655/55/7fab7bc8a0.jpg

Создание шаблонов - http://dl2.joxi.net/drive/2016/10/03/0007/3463/523655/55/083238e274.jpg

2. HAProxy модуль. Предназначен для управления конфиг файлом. Панель управления предоставляет возможность создания конфиг файла для haproxy в виде набора блоков. Каждый блок может быть одним из следующих типов: default, listen, frontend, backend. Также к каждому блоку можно задавать произвольный набор дополнительных данных, которые в реальном конфиге будут добавлены в виде комментария. Это может быть полезно, когда надо давать дополнительные пояснения к большому числу backend или listen блоков.

Скриншоты:

Список конфигов - http://dl2.joxi.net/drive/2016/09/22/0007/3463/523655/55/8e1ea5676b.jpg

Создание дополнительных данных - http://dl2.joxi.net/drive/2016/10/03/0007/3463/523655/55/e3afd4e01d.jpg

Имея данный набор модулей, платформа может решать следующие задачи, связанные с администрированием nginx и haproxy:

1. Ведение централизованного хранилища конфигов.

2. Автоматизированное заведение конфигов. В случае с nginx есть возможность создание типовых конфигов на основе шаблонов.

3. Возможность поддержания одинакого набора конфигов на нескольких серверах (с помощью использования групп агентов).

4. Часто бывает так, что конфиг HAProxy разростается и перестает быть читабельным. Для HAProxy предоставлен удобный интерфейс, который позволяет представлять конфиг файл как набор блоков.

5. Отпадает необходимость вести настройки через терминал.

Также есть демо стенд, данные которого опубликованы пару сообщений выше. Если кто-то смотрел, пробовал его, хотелось бы услышать ваше мнение о проекте.

LostCoast
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.