Git Product home page Git Product logo

sparrow's Issues

Sparrow doesn't get all string of parameters, but strun does

Здравствуйте. Столкнулся с такой штукой, что 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 "}

Посмотрите, пожалуйста.

sshd-check plugin doesn't work now

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

Sparrow task configuration

Здравствуйте. На текущий момент конфигурация тасков у sparrow при использовании json или yaml не самая удобная. То есть, команда sparrow task ini предполагает, что формат будет в Config::General, и если подложить yaml, то данные не подтянутся (Но в тоже время suite.yaml в корне плагина успешно работает). По крайней мере, у меня так. Есть ключ --yaml для тасков, но тогда не очень понятно зачем нужны задачи в таком случае. Ничего не имею против config::general, конечно.
Быть может, имеет смысл как-то заставить работать конфиги в формате json и yaml, когда они создаются комадой sparrow task ini, а ключи --yaml и --json перенести для команды sparrow plg run?

--silent or --quiet flag for all sparrow command

Здравствуйте. Иногда мне приходится парсить вывод из 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

Как вы считаете?

Problem with sparrow.list

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.

SparrowHub trouble

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.

Add an interface to configure checkpoints

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.

Incompatible with perl 5.26 ~

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)

add parameter supported_os in sparrow.json

Здравствуйте. Предлагаю добавить параметр в sparrow.json для указания поддерживаемых ОС.
Это позволит выдавать ошибку на неподдерживаемую ОС еще до запуска самого плагина. Я думаю, можно было бы сделать так:
Если есть этот параметр, то sparrow дергает функцию os и сравнивает вывод с значением (или массивом) параметра. Если все ок, то выполняем плагин, если нет - выдаем ошибку.
Если параметр не указан, то считаем, что плагин везде работает.
Как вы считаете, стоит ли это делать и возможно ли?

logging in sparrow client

Здравствуйте. У меня в планах есть создание плагина 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, но я честно не вижу смысла мне его ставить.

plg man for private plugins

Здравствуйте. Я через 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

Взгляните, как будет время.
Спасибо.

Issue with remote tasks

Здравствуйте. Если подставить другого юзера в 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.

Changing all sparrow plugins to be compatible with Outthentic >= 0.3.0

Приветствую!

В версии 0.3.0 модуля Outthentic

  1. check files стали необязательными, на данный момент есть много плагинов, где существуют пустые story.check файлы, теперь в них нет необходимости ...

  2. Так же наличие файла meta.txt перестало означать, что история не имеет сценария, то что до сих пора называлось мета историей ( технически это означало, что сценарий для такой истории никогда не вызывался, даже если и существовал ), теперь это просто файл, в котором вы можете положить произвольный текст, который будет выведен в отчете, при выполнение истории.

Я планирую в ближайшее время привести все мои плагины в соответствие с последний версий Outthentic, больше всего будет изменений , связанных с пунктом 1

Что бы плагины работали, необходимо обновить Outthentic на целевых серверах , насколько для вас ( @spigell ) это будет проблематично?

setting parameter for sparrow check point during run time

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.

Pre-install tasks for plg install

Здравствуйте. В тикете #12 обсуждали, как сделать зависимости для баша. Сошлись на том, что лучше не добавлять это в sparrow, так как sparrow становится зависимым от package-generic очень сильно.

Если идти предложенным вами путем мне придется делать процесс установки sparrow плагинов зависимым от плагина sparrow package-generic, а sparrow изначально спроектирован так, что плагины не зависят друг от друга, это делает всю систему очень простой и надежной.
Из - #12 (comment)

Все-таки мы ситуацию с пакетами не решили, и недавно мне в голову пришла мысль: "А почему бы не давать возможность до установки плагина проводить какие-то действия?". Например, установка зависимостей для плагинов (системных пакетов) или очень минимальный провайзинг системы (создать лог файла).
Как я это вижу:

  1. В корне есть файлик pre-install.json. Это sparrow box.
  2. Если в плагине есть этот файлик, то вызываем функцию box_run из модуля Sparrow::Commands::TaskBox

Я понимаю, что решение не самое красивое, но по-другому придумать не смог.
Технически, можете посмотреть, это осуществимо?

sparrow-sshtule plugins hangs

Это скорее вопрос. Я подметил, что при работе, если в плагинах использовать команду 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]$ 

dependencies for bash and python plugins.

Здравствуйте. Насколько я понимаю, для перла и руби есть в sparrow сделана поддержка для файлов cpanfile и gemfile. У питона так же есть https://en.wikipedia.org/wiki/Pip_(package_manager), с помощью которого можно было бы устанавливать зависимости. К сожалению, он далеко не во все пакеты python включен, к примеру на centos7 он не ставится вместе с питоном.

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

Как вы считаете?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.