Это скрипт для тестирования связки elliptics + cocaine + grape.
Есть одна главная машина и несколько машин для нод с elliptics'ом. Скрипт устанавливает с помощью apt некоторый список пакетов на главную машину и на ноды с elliptics'ом. Для главной машины и для нод списки пакетов отдельные. Затем скрипт запускает на нодах еллиптикс. На первой в списке ноде он собирает и аплоадит в cocaine тестовое приложение. Далее скрипт тестирует правильность работы тестового приложения, обращаясь к нему с главной машины, завершает демоны elliptics'а на нодах и загружает в текущую директорию файлы со всех нод.
- main_tester.py - самый главный скрипт. Он работает на главной машине и запускать надо именно его. Выполните main_tester.py --help для справки.
- node_tester.py - скрипт, который работает на нодах. Трогать его не стоит.
- main_config.py - конфиг для главной машины.
- node_config.py - конфиг для нод с elliptics'ом. Да, оба конфига - это модули на питоне.
- ssh.py - всякие штуки для работы через ssh.
- common/ - всякие служебные модули, которые используют и main_tester.py, и node_tester.py.
- node_files.tar - конфигурация нод (см. ниже), которую я предлагаю использовать.
На нодах папка working_dir из node_config.py имеет такую структуру:
- node_tester.py
- node_config.py
- common/
- files/ (обработанная node_files/)
Просто скопируйте папку со скриптом на главную машину, с которой будет осуществляться тестирование.
Распакуйте архив node_files.tar в папку со скриптом main_tester.py.
Скрипт выполняет некоторые команды на серверах от суперпользователя. Поэтому у пользователя, под которым скрипт работает на нодах, должны быть права на использование sudo без пароля.
Так же у скрипта должен быть доступ на ноды по ssh без пароля. Поэтому на нодах нужно настроить аутентификацию по ключу. Файл с приватным ключом можно указать скрипту через параметр -k, можно вписать в main_config.py (переменная ssh_key) или просто ничего не делать, если ssh его и так найдет (если это ~/.ssh/id_rsa или он прописан в ~/.ssh/config и т.п.).
Адреса нод с элептиксом нужно вписать в main_config.py (переменная nodes).
Запускать main_tester.py можно от любого пользователя, а пользователя на нодах нужно вписать в main_config.py (переменная ssh_user).
Тестирование включает в себя проверку установки эллиптикса и кокаина из пакетов. Поэтому впишите в переменную packages в main_config.py список пакетов, которые необходимо установить на главной машине (вообще-то на главной машине нужен только клиент для эллиптикса), а в packages в node_config.py - пакеты, которые нужно установить на нодах (эллиптикс, кокаин, грейп и т.п.).
В архиве node_files.tar находится готовая конфигурация для нод. Если она вас не устраивает, то можно сделать свою.
Конфигурация - это просто какая-то папка, которая будет скопирована на ноды под именем [working_dir]/files/. Предполагается, что в этой папке находятся конфиги кокаина и эллиптикса и все папки и файлы, необходимые для их работы. В этой же папке должен находиться исходный код тестового приложения, которое скрипт соберет и загрузит в кокаин.
В этой конфигурации можно использовать шаблоны. Шаблон - это файл с расширением .tmpl. Перед отправкой конфигурации на ноды скрипт обработает все шаблоны и уберет у них расширение .tmpl. Суть шаблонов в том, что в них можно писать текст типа <{code}>, где code - выражение на питоне. Вместо этого текста в реальный файл будет подставлен результат выполнения этого выражения. В таком коде доступны модули main_config и node_config и переменные node (адрес ноды, на которую отправится конфиг) и node_id (целочисленный идентификатор ноды, по факту просто номер ноды в списке в main_config.py). Например, можно написать в шаблоне конфига <{node_config.working_dir}> и вместо этой конструкции в конфиге будет рабочая директория скрипта.
Если вы не изменяли это в конфиге, то скрипт будет искать конфигурацию в папке node_files, которая должна лежать рядом с main_tester.py. Если у вас есть своя нестандартная конфигурация для нод, то нужно вписать путь к ней в main_config.py в переменную node_files.
В node_config.py нужно указать пути к некоторым файлам, которые нужны для работы node_tester.py. Эти файлы - часть конфигурации ноды. Конфиги уже настроены на использование конфигурации из node_files.tar. Если у вас своя конфигурация, то настройте соответствующим образом node_config.py.
ВНИМАНИЕ: Изменять порт, который слушает эллиптикс нельзя, потому что это захардкожено в скрипте.
Теперь можно запустить main_tester.py и потестировать grape.
После того, как скрипт отработает, в текущей директории появится директория nodes/ и файл tester.log. В tester.log будет лог работы main_tester.py (просто продублированный вывод скрипта). В папке nodes/ будут папочки 0/, 1/ и т.д. - это папочки с файлами с нод. Имя каждой папочки - это позиция ноды в списке в конфиге. В каждой такой папке можно найти файлы, которые были отправленны на ноду (nodes/0/to_deploy/), файлы, которые были загруженны с ноды (nodes/0/files/) и лог работы скрипта на ноде (nodes/0/tester.log). Отправленные и загруженные файлы сильно дублируются, но в загруженных есть всякие логи и другие полезные для отладки файлы.
При запуске скрипт предварительно очистит папочку nodes/ и рабочие директории скрипта на нодах. Так что сохраните логи, если они вам нужны!