Command line API makes it possible to run sparrow plugins and modules remotely on target server by using console client, there are a lot of things you could to with this API!
Running plugins with parameters
Executing sparrow plugins. Here is the list of plugins you may use, the form you run them via command line is:
--task_run=plg-name@plg_param=plg_value,plg_param=plg_value ...
Let’s me drop a few examples, how you can use it.
Execute bash commands
Here is where bash sparrow plugin could be handy.
1. Single bash command
$ uptime => $ sparrowdo --host=remote.server --task_run=bash@command=uptime
2. Compound commands
Say you want to execute multiples bash commands chained by logical “AND”, it’s easy:
$ ps uax | grep nginx|grep -v grep && service nginx stop:
==>
$ sparrowdo --host=remote.server \
--task_run=bash@command='ps uax|grep nginx|grep -v grep && service nginx stop'
3. Multiple bash commands
Alternatively you may pass more than one `–task_run` chunks to execute many bash commands consequently:
$ ls -l; uptime ; df -h; => $ sparrowdo --host=remote.server \ --task_run=bash@command='ls -l' \ --task_run=bash@command=uptime \ --task_run=bash@command='df -h'
4. Run command under user’s account
Say you want execute bash command under specific user, not root? It’s easy to do by using sparrow bash plugin
$ sparrowdo --host=remote.server \ --task_run=bash@command=id,user=nginx
Install system packages
Use package-generic plugin. This is cross platform installer with support of some popular Linux distros – Debian/Ubuntu/CentOS.
Install mc, nano and tree packages:
$ sparrowdo --host=remote.server \ --task_run=package-generic@list='mc nano tree'
Install CPAN packages
Use cpan-package plugin to install CPAN packages. There are many options with it. Say I want to create web-app user and install some CPAN package into user’s home …
$ sparrowdo --host=remote.server \ --task_run=user@name=web-app \ --task_run=cpan-package@list='CGI DBI',\ install-base=/home/web-app/,user=web-app
—
What else? Any sparrow plugin could be run the same way:
--task_run=plg-name@plg_param=plg_value,plg_param-plg_value ...
Find one you need at https://sparrowhub.org/search and just use it!
Running modules with parameters
Sparrow modules are more high level entities but you can use them the same way as you do with sparrow plugins – to apply piece of configurations to your servers remotely.
Choose this form:
$ sparrowdo --module_run=module-name@mod_param=mod_value,mod_param=mod_value ...
Here are some examples.
1. Install nginx with custom document-root
Use Sparrowdo::Nginx module:
$ sparrowdo --host=remote.server \ --module_run=Nginx@document_root=/var/www/data
This command produces too much output, so I am not showing it’s screenshot here.
2. Install CPAN packages come from GitHub repositories
There is a Sparrowdo::Cpanm::GitHub module to handle this, it accepts many options and it’s even possible to install modules from Git branches:
Let’s install CGI.pm from master branch at https://github.com/leejo/CGI.pm :
$ sparrowdo --host=remote.server \ --module_run=Cpanm::GitHub@user=leejo,project=CGI.pm,branch=master
This command produces too much output, so I am not showing it’s screenshot here.
3. Fetching remote file
And finally next but not the last example of Sparrowdo module to fetch files over http, it’s called Sparrowdo::RemoteFile
Say I want to fetch some auth basic protected URL and place it into specific directory?
Well let’s do it in one shot:
$ sparrowdo --host=remote.server \ --module_run=RemoteFile@user=fox,password=red,location=http://archive.server/file.tar.gz,location=/opt/data/
This command produces too much output, so I am not showing it’s screen shot here.
Conclusion
Sparrowdo command line API provides an easy and simple way to configure servers remotely by using only console client with no coding at all, in a style of bash oneliners.
But if you look for something more complicated and powerful – consider using Sparrowdo scenarios!
Leave a Reply