Skip to content

Ceredira/CerediraTess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CerediraTess

HTTP-сервис для выполнения скриптов (.bat, .sh) на удаленных агентах (Windows, Linux).

Проект находится в разработке!!!

По всем вопросам обращаться в телеграм чат поддержки: t.me/CerediraTess.

Содержание

  1. Содержание
  2. Описание инструмента CerediraTess
    1. Для кого предназначен этот инструмент
    2. Какие проблемы, решает этот инструмент
    3. Основные задачи инструмента
    4. Второстепенные задачи инструмента
    5. Особенности инсрумента
  3. Системные требования
  4. Установка и настройка
    1. Первый запуск
    2. Установка в качестве сервиса
  5. Дополнительная информация
    1. Кто создал CerediraTess?
    2. Почему изначально была создана CerediraTess?
    3. Хорошо, а в чём подвох? Что вы получаете распространяя CerediraTess?

English version

Описание инструмента CerediraTess

Для кого предназначен этот инструмент:

  • DevOps-инженерам;
  • Администраторам операционных систем;
  • Тестировщики;
  • Автоматизаторам;
  • Программистам.

Какие проблемы, решает этот инструмент:

  1. Администраторам операционных систем, необходимо разрешить команде разработки выполнять перезагрузку сервиса Windows на машине, без возможности выполнять любые другие действия на этой машине и без необходимости выдачи каждому пользователю прав для входа на машину.
  2. Администраторам операционных систем, необходимо обеспечить тестировщикам возможность очистки логов сервисов Windows на серверах, без возможности выполнять любые другие действия на этих серверах, без необходимости предоставления прав именно на разрешенные действия.
  3. Администраторам операционных систем, по запросу пользователей, устанавливать на рабочих виртуальных машинах пользователей различное ПО вида Java JDK, Python интерпретатор, Maven, среды разработки и любой другой софт, без необходимости ручного вмешательства в процесс установки.
  4. DevOps-инженерам, если у вас автоматизация тестирования, в качестве агентов выступают Windows машины, пул машин меняется или растет, то необходимо устанавливать ПО и настраивать одни и те же параметры на каждой машине, и велика вероятность возникновения ошибки.
  5. Автоматизаторам при проведении нагрузочного тестирования необходимо приводить стенд нагрузочного тестирования в изначальное положение: выполнять перезагрузку, чистить логи, чистить таблицы баз данных и т.п.
  6. Тестировщикам, при обновлении кода эмуляторов или заглушек, необходимо выполнять редеплой.

Основные задачи инструмента:

  • Предоставление широкому кругу пользователей возможность выполнения действий, согласованных с администратором, на удаленных агентах.
  • Сокрытие от пользователей используемых учетных данных, для подключения к удаленным агентам.
  • API-интерфейс, для возможности использования в связке с инструментами организации CI\CD.

Второстепенные задачи инструмента:

  • Файловый сервер.
  • Пользовательский интерфейс для удобства администрирования инструмента.
  • Пользовательский интерфейс для удобства ручного использования инструмента/отладки скриптов.

Особенности инсрумента:

  • Не нужно устанавливать на удаленных агентах для выполнения действий дополнительное ПО и выполнять настройки.
  • Встроенный широкий набор скриптов, который позволит выполнить быстрый старт.
  • Открытость набора встроенных скриптов позволит быстро обучится написанию собственных.

Системные требования

Информация в данном разделе будет уточнения после проведения дополнительных испытаний. Все очень сильно зависит от задач.

  • Конфигурация с количеством параллельных агентов до 50 штук:
    1. ЦП: 4 ядра;
    2. ОП: 6-8 Гб;
    3. Диск: 50 Гб или больше.
  • Конфигурация для запуска UI автотестов с открытием RDP сессий, агентов до 20-30 штук одновременно:
    1. ЦП: 8 ядер;
    2. ОП: 16 Гб;
    3. Диск: 100 Гб или больше.

Как собрать приложение из исходного кода

Сборка приложения под ОС Windows

pyinstaller --name CerediraTess --add-data="venv\Lib\site-packages\flask_admin\static\admin\css\bootstrap4;ceredira_tess\static\admin\css\bootstrap4" --add-data="venv\Lib\site-packages\flask_admin\static\admin\js;ceredira_tess\static\admin\js" --add-data="venv\Lib\site-packages\flask_admin\static\bootstrap\bootstrap4\css;ceredira_tess\static\bootstrap\bootstrap4\css" --add-data="venv\Lib\site-packages\flask_admin\static\bootstrap\bootstrap4\fonts;ceredira_tess\static\bootstrap\bootstrap4\fonts" --add-data="venv\Lib\site-packages\flask_admin\static\bootstrap\bootstrap4\js;ceredira_tess\static\bootstrap\bootstrap4\js" --add-data="venv\Lib\site-packages\flask_admin\static\bootstrap\bootstrap4\swatch\flatly;ceredira_tess\static\bootstrap\bootstrap4\swatch\flatly" --add-data="venv\Lib\site-packages\flask_admin\static\vendor\bootstrap-daterangepicker\daterangepicker-bs4.css;ceredira_tess\static\vendor\bootstrap-daterangepicker" --add-data="venv\Lib\site-packages\flask_admin\static\vendor\bootstrap-daterangepicker\daterangepicker.js;ceredira_tess\static\vendor\bootstrap-daterangepicker" --add-data="venv\Lib\site-packages\flask_admin\static\vendor\bootstrap-daterangepicker\README.MD;ceredira_tess\static\vendor\bootstrap-daterangepicker" --add-data="venv\Lib\site-packages\flask_admin\static\vendor\bootstrap4;ceredira_tess\static\vendor\bootstrap4" --add-data="venv\Lib\site-packages\flask_admin\static\vendor\leaflet;ceredira_tess\static\vendor\leaflet" --add-data="venv\Lib\site-packages\flask_admin\static\vendor\multi-level-dropdowns-bootstrap;ceredira_tess\static\vendor\multi-level-dropdowns-bootstrap" --add-data="venv\Lib\site-packages\flask_admin\static\vendor\select2;ceredira_tess\static\vendor\select2" --add-data="venv\Lib\site-packages\flask_admin\static\vendor\x-editable;ceredira_tess\static\vendor\x-editable" --add-data="venv\Lib\site-packages\flask_admin\static\vendor\jquery.min.js;ceredira_tess\static\vendor" --add-data="venv\Lib\site-packages\flask_admin\static\vendor\moment.min.js;ceredira_tess\static\vendor" --add-data="venv\Lib\site-packages\flask_admin\static\vendor\popper.min.js;ceredira_tess\static\vendor" --add-data="venv\Lib\site-packages\flask_admin\templates\bootstrap4\admin;ceredira_tess\templates\admin" --add-data="venv\Lib\site-packages\flask_admin\translations\ru;flask_admin\translations\ru" --add-data "www;www" --add-data "scripts;scripts" --add-data "resources;resources" --add-data="ceredira_tess\static;ceredira_tess\static" --add-data="ceredira_tess\templates;ceredira_tess\templates" run.py

Установка и настройка

Первый запуск

  1. Скачать архив с последней версией CerediraTess со страницы релизов https://github.com/Ceredira/CerediraTess/releases.
  2. Создать каталог, например: C:\Temp\CerediraTess_{ProjectName1}\, который будет является корнем проекта, где {ProjectName1} - желаемое имя проекта.
  3. Распаковать содержимое архива в созданный каталог.
  4. Перейти в каталог CerediraTess и переименовать CerediraTess.exe в CerediraTess_{ProjectName1}.exe.
  5. Вернутся в каталог на уровень выше.
  6. Запустить командную строку в данно каталоге.
  7. Выполнить команду CerediraTess\CerediraTess_{ProjectName1}.exe.
  8. Правка файлов конфигурации:
    1. На текущий момент в файле users.json зашито 2 пользователя:
      1. usr_1 с паролем 1qaz@WSX
      2. usr_2 с паролем !QAZ2wsx
      3. В дальнейшем это будет разрешено редактировать через странице Администрирования в UI.
    2. На текущий момент в файле agents.json зашито 2 агента, один локальный, другой удаленный. Их можно использовать как шаблоны для добавления новых агентов в конфигурационный файл, пока не будет реализован функционал страницы Администрирование.
  9. Загрузка необходимых сторонних утилит, для выполнения удаленных команд:
    1. С сайта https://live.sysinternals.com/ скачать утилиту psexec.exe и положить в каталог resources проекта. Для возможности выполнения запросов к удаленным Windows-машинам.
    2. С сайта https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html скачать утилиту plink.exe и положить в каталог resources проекта. Для возможности выполнения запросов к удаленным Linux-машинам.
  10. Утилита работает.

Установка в качестве сервиса

Для уставноки в качестве сервиса используется утилита nssm.exe.

Принцип работы с системы

Варианты работы системы

Дополнительная информация

Кто создал CerediraTess?

CerediraTess (CT) как концепт, был создан unixshaman (Джамалов Газимагомед) в январе 2018 года на проектах по автоматизации тестирования программного обеспечения компании AppLine.ru. Проект назывался WindowsServiceWebAPI (WSWA) и был написан на C# и .NET Framework. Большой вклад в рефакторинг первой версии WSWA был внесен Дильдиным Николаем.

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

Однако, теперь CT - это проект с открытым исходным кодом, и я не могу сказать, что все что тут сделано, будет только моим. Возможно, у проекта появятся соавторы, которые помогли бы сделать CT еще лучше. Также нельзя забывать о всех тех прекрасных библиотеках и инструментах, благодаря которым стало возможным создание CT, в особенности psexec.exe, без которого проект выглядел бы не так минималистично, как сейчас. Отдельное спасибо, Богачеву Никите, чьи наработки в части сервиса из проекта KeyWordAutomation я смог использовать.

CT не стал бы тем, чем он является сегодня, без помощи моих родителей и других людей, поддерживавших меня во всём что я здесь делаю.

Спасибо вам всем за помощь в разработке CerediraTess!

Почему изначально была создана CerediraTess?

Основной целью создания CT было получить инструмент с удобным интерфейсом (как GUI, так и API для возможности использования в автоматизации) для возможности выполнения команд или скриптов (набора команд) на удаленных агентах (Windows\Linux), без необходимости предварительной установки дополнительного программного обеспечения или выполнения иных конфигурационных действий на них. Фактически, это все еще так и остается его основной целью, поскольку моя концепция не менялась с 2018 года, и я все еще следую ей. Разумеется, с тех пор было сделано много изменений в части стабильности, доработок в части безопасности и нововведений, включая полное переписывание с технологического стека C# и .NET Framework на Python.

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

Хорошо, а в чём подвох? Что вы получаете распространяя CerediraTess?

Нет никакого подвоха, я создал CT для себя и поделился им с остальным сообществом в надежде, что он окажется полезным. То же самое случилось в 1991 году, когда Линус Торвальдс поделился своим первым ядром Linux с остальным миром. В нём нет скрытых вредоносных программ, сбора данных, майнинга криптовалют или других функций, которые принесут мне денежную выгоду. Проект CT поддерживается исключительно необязательными пожертвованиями от довольных пользователей, таких же, как вы. Вы можете использовать CT точно так же как его использую я, и если он вам нравится - вы всегда можете спонсировать меня, чтобы показать свою благодарность за то, что я делаю.

Также, я использую CT, как пример для обучения в разработке современного проекта на Python, который всегда стремится к совершенству и лучшим практикам, будь то касательно технологий, управления проектами или самого кода. Поэтому если вы сможете чему-то научиться из моего проекта - это только сделает меня счастливее.

CerediraTess. English Version

Service for script execution on remote hosts.
Must be running on Windows as executable, or as a windows service with nssm.exe using.
Run .bat scripts on Windows hosts.