sparrow remote tasks - way to package your scripts and configurations.
Idea behind a sparrow is quite simple. You have a script, you package it as sparrow plugin and you can re-use it somewhere else.
Give me list of available plugins:
$ sparrow plg search
type name
public app-cpm
public bash
public bitbucket-repo
public check-tomcat-deploy
public chemaxon-check
public cpan-package
public df-check
public directory
public docker-engine
public file
public foo-generic
public foo-test
public git-async-push
public git-base
public git-svn-export
public gitprep
public group
public http-status
public logdog
public minion-check
public module-release
public mongodb
public nano-setup
public net-ping
public nginx-check
public nginx-example
public outth-mysql-cookbook
public package-generic
public perl-app
public perlbrew
public proc-validate
public ruby-test
public sendmail
public service
public sph-check
public ssh-sudo-check
public ssh-sudo-try
public sshd-check
public stale-proc-check
public svn-to-git-submodules
public swat-nginx
public swat-pintod
public swat-test
public templater
public user
private package-generic-dev
This plugin makes a trivial nano.rc file configuration:
$ sparrow plg install nano-setup
Project is just a container for plugins to group them logically:
$ sparrow project create utils
Task is a plugin with parameters, in other words task bind plugin with parameters to project:
$ sparrow task add utils nano-rc nano-setup
$ sparrow task ini utils nano-rc
tabsize 2
Now let's run our task:
$ sparrow task run utils nano-rc
<nano-rc>
/ started
rc file generated from template
rc file updated
ok scenario succeeded
ok [b] output match 'rc file generated from template'
ok [b] output match 'rc file updated'
STATUS SUCCEED
You can even override task parameters via command line:
$ sparrow task run utils nano-rc --param tabsize=4
So sparrow plugins are packed scripts, but I want to package my configuration ...
A task initialization process could be the same if we want to reuse not only scripts but configuration. Every time I ssh on new server I want to apply the same nano.rc as it good for me. Here are remote sparrow tasks:
$ sparrow remote task upload utils/nano-rc 'my nano.rc setup'
task updated
task ini data updated OK
I have just uploaded a nano-rc task and it's configuration to my SparrowHub account. Now having this I could ssh to another server and re-apply my task:
$ ssh some-server
$ sparrow remote task run utils/nano-rc
task meta data saved to /home/vagrant/sparrow/cache/meta/utils/nano-rc.json ...
public@nano-setup is uptodate (0.1.0)
project utils already exists - nothing to do here ...
task utils/nano-rc already exists, update task parameters
task - set plugin to public@nano-setup
task utils/nano-rc successfully created
loaded test suite ini from /home/vagrant/sparrow/cache/meta/utils/nano-rc.ini OK
<nano-rc>
/ started
rc file generated from template
rc file updated
ok scenario succeeded
ok [b] output match 'rc file generated from template'
ok [b] output match 'rc file updated'
STATUS SUCCEED
Pretty handy, huh?
Once remote task gets run for the first time , later you can run it as local sparrow task :
$ sparrow task run utils nano-rc
Ok, if I find my task quite common I even can share it with others:
$ sparrow remote task share utils/nano-rc
task nano-rc shared OK
now everyone could see it!
Everyone now can run my task:
$ sparrow remote task run melezhik@utils/nano-rc
The list of available remote tasks could be fetched like this:
$ sparrow remote task public-list
2016-10-24 12:59:06 melezhik@packages/toplist | install my favorite packages
2016-10-24 12:58:22 melezhik@utils/nano-rc | my nano.rc setup
The list of private remote tasks related to your account is taken as:
$ sparrow remote task list
You may take other actions on your remote tasks:
$ sparrow remote task hide app/secure # to hide task from others ( make it private )
$ sparrow remote task remove app/secure # to remove task
Further steps
Follow sparrow docs on remote tasks API. Or create useful task and share with others!
At the end of my post is a simple but illuminative example of remote task to install my favorite packages:
$ sparrow project create packages
$ sparrow task add packages toplist package-generic
$ sparrow task ini packages toplist
list nano mc ncdu telnet tree
$ sparrow remote task upload packages/toplist 'installs my favorite packages'
Regards
Alexey Melezhik
Leave a comment