melezhik / sparrow Goto Github PK
View Code? Open in Web Editor NEWSparrow - script distribution platform for Linux OS
Home Page: https://sparrowhub.org
Sparrow - script distribution platform for Linux OS
Home Page: https://sparrowhub.org
Здравствуйте. Столкнулся с такой штукой, что sparrow при передачи параметров берет только первый из строки, а не все. Strun работает корректно. Например,
[spigell@hammerhead ~]$ sparrow plg run bash-pssh --param commands=uname --param hosts="194.87.235.183 193.124.178.59 " --debug 2 --param debug=1
make cache dir: /home/spigell/.outthentic/tmp/10319/story-0
configuration populated and saved to /home/spigell/.outthentic/tmp/10319/story-0/config.json
project: /home/spigell/sparrow/plugins/private/bash-pssh
story: /home/spigell/sparrow/plugins/private/bash-pssh
story_type: upstream
debug: 2
ignore story errors: 0
•[plg] bash-pssh at 2017-05-14 01:24:09
execute scenario: bash -c 'source /home/spigell/.outthentic/tmp/10319/story-0/glue.bash && source /usr/share/perl5/site_perl/auto/share/dist/Outthentic/outthentic.bash && source /home/spigell/sparrow/plugins/private/bash-pssh/story.bash'
+++ config hosts
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/10319/story-0/config.json hosts
++ hosts=194.87.235.183
В json конфиге только первое значение.
[spigell@hammerhead ~]$ cat /home/spigell/.outthentic/tmp/10319/story-0/config.json; echo
{"hosts":"194.87.235.183","debug":"1","commands":"uname"}
Если же все делать через strun, то получается все хорошо. Тот же самый плагин, те же самый параметры.
cd ./sparrow/plugins/private/bash-pssh/
[spigell@hammerhead bash-pssh]$ strun --param commands=uname --param hosts="194.87.235.183 193.124.178.59 " --debug 2 --param debug=1
make cache dir: /home/spigell/.outthentic/tmp/10412/story-0
configuration populated and saved to /home/spigell/.outthentic/tmp/10412/story-0/config.json
project: /home/spigell/sparrow/plugins/private/bash-pssh
story: /home/spigell/sparrow/plugins/private/bash-pssh
story_type: upstream
debug: 2
ignore story errors: 0
• at 2017-05-14 01:27:58
execute scenario: bash -c 'source /home/spigell/.outthentic/tmp/10412/story-0/glue.bash && source /usr/share/perl5/site_perl/auto/share/dist/Outthentic/outthentic.bash && source /home/spigell/sparrow/plugins/private/bash-pssh/story.bash'
+++ config hosts
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/10412/story-0/config.json hosts
++ hosts='194.87.235.183 193.124.178.59 '
[spigell@hammerhead bash-pssh]$ cat /home/spigell/.outthentic/tmp/10412/story-0/config.json ;echo
{"commands":"uname","debug":"1","hosts":"194.87.235.183 193.124.178.59 "}
Посмотрите, пожалуйста.
hi! I am new in sparrow. Testing some plugins today I run sshd-check and it ended with error.
[spigell@hammerhead ~]$ sparrow plg run sshd-check
Can't open perl script "/home/spigell/.outthentic/tmp/13272/home/spigell/sparrow/plugins/public/sshd-check/sparrow.pl": No such file or directory
STATUS FAILED (512)
Maybe the file one is looking for is under runnig dir:
[spigell@hammerhead ~]$ ls -laht /home/spigell/.outthentic/tmp/13169/home/spigell/sparrow/plugins/public/sshd-check/running/sparrow.pl
-rw-r--r-- 1 spigell users 995 Jan 20 19:24 /home/spigell/.outthentic/tmp/13169/home/spigell/sparrow/plugins/public/sshd-check/running/sparrow.pl
https://sparrowhub.org/bootstrap.sh - здесь еще старая версия скрипта. Возможно, имеет смысл поменять на новый. Сделал тикет, чтобы не забылось.
It maybe useful when someone can't use sparrowDo, but need to keep tasks in one file.
sparrow check add $project $checkname
currently returns with error when the $checkname
already exists indide $project
.
Since this will result in the expected state anyway, it might be a good idea to return success and and exit code of 0 instead (as discussed via IRC and/or RexOps/rex-recipes#28).
Здравствуйте. На текущий момент конфигурация тасков у sparrow при использовании json или yaml не самая удобная. То есть, команда sparrow task ini
предполагает, что формат будет в Config::General, и если подложить yaml, то данные не подтянутся (Но в тоже время suite.yaml в корне плагина успешно работает). По крайней мере, у меня так. Есть ключ --yaml для тасков, но тогда не очень понятно зачем нужны задачи в таком случае. Ничего не имею против config::general, конечно.
Быть может, имеет смысл как-то заставить работать конфиги в формате json и yaml, когда они создаются комадой sparrow task ini
, а ключи --yaml
и --json
перенести для команды sparrow plg run
?
Здравствуйте. Иногда мне приходится парсить вывод из sparrow плагина. И также приходится отбрасывать последние строчки через sed. Неплохо было бы, если имелась возможность убирать строчки от sparrow о том. что все успешно/неуспешно.
То есть, запуская плагин с этим флагом, я хочу видеть только то, что выводит сам скрипт. Например,
[spigell@hammerhead ~]$ sparrow plg run bash --param command='"echo This is OUTPUT"'
{bash}
@ runs bash command
{bash} modules/bash-command/ params: envvars: at 2017-03-26 18:30:12
This is OUTPUT
ok scenario succeeded
STATUS SUCCEED
Тоже самое, но с этим флагом.
[spigell@hammerhead ~]$ sparrow plg run bash --param command='"echo This is OUTPUT"' --quiet
This is OUTPUT
Я честно не знаю как его назвать. Ведь у strun есть --silent, а у sparrow task есть --quiet
Да, я понимаю, что c этим флагом скорее всего не могут быть произведены проверки через файл story.check
Как вы считаете?
Hi.
I'm trying to run '$ sparrow plg search ssh' (that's just an example. I get the same error all over) &
I get 'can't open /home/xxx/sparrow.list to read at /home/xxx/perl5/lib/perl5/Sparrow/Commands/Plugin.pm line 443'
also: 'Sparrow::Commands::Plugin::read_plugin_list() called at /home/xxx/perl5/lib/perl5/Sparrow/Commands/Plugin.pm line 43'
& lastly: 'Sparrow::Commands::Plugin::search_plugins() called at /home/xxx/perl5/bin/sparrow line 34'
Any help appreciated.
Cheers Phil.
I'm trying sparrow for the first time here and may need some guidance, but there's a chance that something's off.
$ head sparrow.index
<!DOCTYPE html>
<html>
<head>
<script src="/js/jquery-1.12.2.min.js"></script>
No plugin info shown in response to https://sparrowhub.org/info/perlbrew?v=0.001004, either.
It would probably be nice to have a sparrow command that helps with configuring checkpoints, e.g. something like:
$ sparrow setconfig df-check --threshold=80
Of course, the above is just an example, not an exact syntax requested :)
The idea can also be extended to have a command to get the actual configuration values too.
Greetings. Are you planning to add support for python scripts?
Thanks.
Hi,
Your
M/ME/MELEZHIK/Sparrow-0.3.2.tar.gz
M/ME/MELEZHIK/Outthentic-0.4.0.tar.gz
are now not compatible with perl 5.26 and above.
Please see http://blogs.perl.org/users/todd_rinaldo/2016/11/how-removing-from-inc-is-about-to-break-cpan.html
$ cpan Sparrow
Reading '/Users/user/.cpan/Metadata'
Database was generated on Thu, 01 Nov 2018 00:29:03 GMT
Running install for module 'Sparrow'
CPAN: Digest::SHA loaded ok (v6.02)
CPAN: Compress::Zlib loaded ok (v2.081)
Checksum for /Users/user/.cpan/sources/authors/id/M/ME/MELEZHIK/Sparrow-0.3.2.tar.gz ok
CPAN: YAML loaded ok (v1.26)
CPAN: CPAN::Meta::Requirements loaded ok (v2.140)
CPAN: Parse::CPAN::Meta loaded ok (v2.150010)
CPAN: CPAN::Meta loaded ok (v2.150010)
CPAN: Module::CoreList loaded ok (v5.20181020)
Configuring M/ME/MELEZHIK/Sparrow-0.3.2.tar.gz with Makefile.PL
CPAN: CPAN::Reporter loaded ok (v1.2018)
Can't locate inc/Module/Install.pm in @INC (you may need to install the inc::Module::Install module) (@INC contains: ...... ) at Makefile.PL line 1.
BEGIN failed--compilation aborted at Makefile.PL line 1.
(/Users/user/perl5/perlbrew/perls/perl-5.26/bin/perl Makefile.PL exited with 512)
Здравствуйте. Предлагаю добавить параметр в sparrow.json для указания поддерживаемых ОС.
Это позволит выдавать ошибку на неподдерживаемую ОС еще до запуска самого плагина. Я думаю, можно было бы сделать так:
Если есть этот параметр, то sparrow дергает функцию os и сравнивает вывод с значением (или массивом) параметра. Если все ок, то выполняем плагин, если нет - выдаем ошибку.
Если параметр не указан, то считаем, что плагин везде работает.
Как вы считаете, стоит ли это делать и возможно ли?
Здравствуйте. У меня в планах есть создание плагина sparrow для запуска sparrowDO на мастер-хосте, т.е. что-то вроде git pull или puppet agent, так как не всегда целевые хосты включены во время "прогона" через sparrowDO. В связи с этим мне хотелось бы sparrow сам запускался (как это сделано уже не важно) и, что немаловажно, желательно, чтобы он что-то писал куда-нибудь. Мой вопрос именно в логировании. Возможно ли добавить в sparrow какое-то логирование в файл прямо в клиент (хотя бы с указанием времени запуска тестов и выводом результатов теста в читаемом виде из файла без указания цветовых последовательностей)? На текущий момент перенаправление из stdout в файл для сохранения результата работает, но потом смотреть это тяжело, на мой взгляд:
[spigell@hammerhead ~]$ sparrow plg run df-check > ./sparrow.log
Если сделать cat этого файла, то в stdout будет все нормально. Но в less или vim это будет смотрется так:
ESC[33m{df-check} ESC[0m
ESC[37mFilesystem Size Used Avail Use% Mounted onESC[0m
ESC[37mdev 2.9G 0 2.9G 0% /devESC[0m
ESC[37mrun 2.9G 1.2M 2.9G 1% /runESC[0m
ESC[37m/dev/mapper/vg--arch--root-slashroot 25G 22G 2.3G 91% /ESC[0m
ESC[37mtmpfs 2.9G 27M 2.9G 1% /dev/shmESC[0m
ESC[37mtmpfs 2.9G 0 2.9G 0% /sys/fs/cgroupESC[0m
ESC[37mtmpfs 5.0G 64K 5.0G 1% /tmpESC[0m
ESC[37mtmpfs 5.0G 0 5.0G 0% /var/tmpESC[0m
ESC[37m/dev/sda1 194M 90M 94M 49% /bootESC[0m
ESC[37m/dev/mapper/vg--arch--home-spigell 14G 9.5G 3.6G 73% /home/spigellESC[0m
ESC[37m/dev/mapper/vg--arch--home-music 6.8G 5.6G 821M 88% /home/spigell/musicESC[0m
ESC[37m/dev/mapper/vg--arch--home-downloads 9.8G 2.9G 6.4G 31% /home/spigell/downloadsESC[0m
ESC[37m/dev/mapper/vg--arch--home-VMs 26G 24G 512M 98% /home/spigell/VMsESC[0m
ESC[37mtmpfs 586M 12K 586M 1% /run/user/1000ESC[0m
ESC[37m/dev/sda3 15G 5.9G 8.2G 42% /home/spigell/fedora-storESC[0m
ESC[37mOKESC[0m
ESC[32mok scenario succeededESC[0m
threshhold: 80
ESC[32mok text match /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ESC[0m
ESC[32mok enough disk space (0%) on devESC[0m
ESC[32mok enough disk space (1%) on runESC[0m
ESC[31mnot ok enough disk space (91%) on /dev/mapper/vg--arch--root-slashrootESC[0m
ESC[32mok enough disk space (1%) on tmpfsESC[0m
ESC[32mok enough disk space (0%) on tmpfsESC[0m
ESC[32mok enough disk space (1%) on tmpfsESC[0m
ESC[32mok enough disk space (0%) on tmpfsESC[0m
ESC[32mok enough disk space (49%) on /dev/sda1ESC[0m
ESC[32mok enough disk space (73%) on /dev/mapper/vg--arch--home-spigellESC[0m
ESC[31mnot ok enough disk space (88%) on /dev/mapper/vg--arch--home-musicESC[0m
ESC[32mok enough disk space (31%) on /dev/mapper/vg--arch--home-downloadsESC[0m
ESC[31mnot ok enough disk space (98%) on /dev/mapper/vg--arch--home-VMsESC[0m
ESC[32mok enough disk space (1%) on tmpfsESC[0m
ESC[32mok enough disk space (42%) on /dev/sda3ESC[0m
ESC[31mSTATUS FAILED (256)
ESC[0m
Конечно, можно убрать эти символы из файла через регулярки, оставить только неудачные тесты, но это неудобно.
Как вы считаете, нужно ли логирование? Возможно. что-то удобное есть в sparrowUP, но я честно не вижу смысла мне его ставить.
Здравствуйте. Я через sparrow.list добавил и установил приватный плагин.
[spigell@puppet_sparrow-test sshuttle]$ sparrow plg list user-spigell-dev
[installed sparrow plugins]
[public]
user
[private]
user-spigell-dev
Но дока все равно берется не из того каталога.
[spigell@puppet_sparrow-test sshuttle]$ sparrow plg man user-spigell-dev
cat: /home/spigell/sparrow/plugins/public/user-spigell-dev/README.md: No such file or directory
Взгляните, как будет время.
Спасибо.
Из этого поста. Давайте подумаем, может файлик тоже должен быть в виде md документа?
Здравствуйте. Если подставить другого юзера в sparrowhub.json
[spigell@hammerhead ~]$ cat ~/sparrowhub.json
{
"user" : "melezhik",
"token" : "..."
}
То можно увидеть список его задач
[spigell@hammerhead ~]$ sparrow remote task list | head -2
2017-04-07 17:16:34 private foo_project/t1_task | t1 task
2017-04-07 17:16:32 private baz_project/baz_task | %comment%
Эти задачи не мои. И поставить я их не могу, так sparrowhub отдает 401 http ошибку при установке из-за неправильного токена. Но тем не менее, странное поведение.
Также, в документации по Remote tasks опечатка:
A shortcut for
sparrow remote task install ... & sparrow task run
is:
$ sparrow remote task task run utils/git-setup
[spigell@hammerhead ~/my_configs/configs-tmux]$ sparrow remote task task run utils/git-setu
unknown command: task run utils/git-setu at /usr/bin/site_perl/sparrow line 230.
Приветствую!
В версии 0.3.0 модуля Outthentic
check files стали необязательными, на данный момент есть много плагинов, где существуют пустые story.check файлы, теперь в них нет необходимости ...
Так же наличие файла meta.txt перестало означать, что история не имеет сценария, то что до сих пора называлось мета историей ( технически это означало, что сценарий для такой истории никогда не вызывался, даже если и существовал ), теперь это просто файл, в котором вы можете положить произвольный текст, который будет выведен в отчете, при выполнение истории.
Я планирую в ближайшее время привести все мои плагины в соответствие с последний версий Outthentic, больше всего будет изменений , связанных с пунктом 1
Что бы плагины работали, необходимо обновить Outthentic на целевых серверах , насколько для вас ( @spigell ) это будет проблематично?
Baed on #2 - it be good to set parameter for sparrow check point during run time, something like that:
rex Misc:Sparrow:Check --check system.disk --threshold=60
This task just will override default threshold value on per session basis and once check is done the default value for threshold still remain in ini file.
Здравствуйте. В тикете #12 обсуждали, как сделать зависимости для баша. Сошлись на том, что лучше не добавлять это в sparrow, так как sparrow становится зависимым от package-generic очень сильно.
Если идти предложенным вами путем мне придется делать процесс установки sparrow плагинов зависимым от плагина sparrow package-generic, а sparrow изначально спроектирован так, что плагины не зависят друг от друга, это делает всю систему очень простой и надежной.
Из - #12 (comment)
Все-таки мы ситуацию с пакетами не решили, и недавно мне в голову пришла мысль: "А почему бы не давать возможность до установки плагина проводить какие-то действия?". Например, установка зависимостей для плагинов (системных пакетов) или очень минимальный провайзинг системы (создать лог файла).
Как я это вижу:
pre-install.json
. Это sparrow box.Я понимаю, что решение не самое красивое, но по-другому придумать не смог.
Технически, можете посмотреть, это осуществимо?
Это скорее вопрос. Я подметил, что при работе, если в плагинах использовать команду ssh, то получаются странные ситуации. У меня есть скрипт, который с помощью sshuttle создает кучу vpn с серверами. У этой утилиты есть ключ -D, который говорит о том, что приложение уйдет в фон после запуска. При запуске в консольке и скриптах bash он отдает консольку. Но в плагинах sparrow он чего-то ожидает. Пример:
[spigell@puppet_sparrow-test sshuttle]$ strun --param host=193.124.178.59 --param subnet=192.168.23.0 --param netmask=24 --param check_ip=192.168.23.1 --debug 1
make cache dir: /home/spigell/.outthentic/tmp/25059/story-0
configuration populated and saved to /home/spigell/.outthentic/tmp/25059/story-0/config.json
[s] at 2017-02-23 11:25:04
+++ config host
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/25059/story-0/config.json host
++ host=193.124.178.59
+++ config subnet
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/25059/story-0/config.json subnet
++ subnet=192.168.23.0
+++ config netmask
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/25059/story-0/config.json netmask
++ netmask=24
+++ config user
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/25059/story-0/config.json user
++ user=spigell
+++ config check_ip
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/25059/story-0/config.json check_ip
++ check_host=192.168.23.1
++ sshuttle -v -D -r [email protected] 192.168.23.0/24
Starting sshuttle proxy.
Listening on ('127.0.0.1', 12298).
c : connecting to server...
c : connected.
Connected.
adsfasdf
ad
sa
asf^C
STATUS FAILED (2)
[spigell@puppet_sparrow-test sshuttle]$
Можете подсказать, в чем дело может быть? Тоже самое, если зайти по ssh через sparrow скрипт:
[spigell@puppet_sparrow-test sshuttle]$ strun --param host=127.0.0.1
[s] at 2017-02-23 11:27:44
+++ config host
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/25270/story-0/config.json host
++ host=127.0.0.1
+++ config subnet
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/25270/story-0/config.json subnet
++ subnet=
+++ config netmask
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/25270/story-0/config.json netmask
++ netmask=
+++ config user
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/25270/story-0/config.json user
++ user=spigell
+++ config check_ip
+++ perl -MOutthentic::Glue::Bash -e json_var /home/spigell/.outthentic/tmp/25270/story-0/config.json check_ip
++ check_host=
++ ssh 127.0.0.1 bash
ls
perl5
sparrow
sparrow.index
sparrow.list
spigell
sshuttle
sshuttle.pid
sshuttle.sh
user
user-forked
^CSTATUS FAILED (2)
[spigell@puppet_sparrow-test sshuttle]$
Здравствуйте. Насколько я понимаю, для перла и руби есть в sparrow сделана поддержка для файлов cpanfile и gemfile. У питона так же есть https://en.wikipedia.org/wiki/Pip_(package_manager), с помощью которого можно было бы устанавливать зависимости. К сожалению, он далеко не во все пакеты python включен, к примеру на centos7 он не ставится вместе с питоном.
Также, можно было бы сделать что-то подобное для bash плагинов через плагин package-generic. Конечно, минус в том, что плагин мало ОС поддерживает.
Как вы считаете?
Из разговора - https://groups.google.com/forum/#!topic/sparrowhub/f7HwNLeHFb4
Надо как-то уточнить про sparrow.yaml. Что можно в нем писать и как использовать.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.