Welcome to SparrowHub!

Sparrow is a multipurpose scenarios system with a SparrowHub - a central repository for sparrow plugins - reusable automation scripts. One can easily create a new sparrow plugins to solve a specific tasks using one of favorite languages - Perl, Bash or Ruby, see 5 Minutes Tutorial For Sparrow Plugins Developers.

Sparrowdo is a Perl6 configuration management tool based on sparrow plugin system. Sparrowdo is a simple configuration management tool. "Simple" does mean weak! See below how one can accomplish a regular deployment tasks using sparrowdo scenarios.

Installing sparrow
Sparrow acts as client for sparrowdo configuration management tool. It should be installed on every target host, where you want to make your deployment:
$ ssh target.host
$ cpanm Sparrow
$ yum install curl
Installing sparrowdo

Sparrowdo should be installed on "master" host, where your run your sparrowdo scenarios from:

$ ssh master.host
$ panda install Sparrowdo
Running sparrowdo scenarios

Having installed Sparrowdo on master host, you may create and then run scenarios from:

$ nano sparrowfile
$ sparrowdo --host=192.168.0.1
Sparrowdo client has a lot of options to set such like a `ssh user` or `verbose mode`, follow sparrowdo documentation to know more. Below are some sparrowdo scenarios examples, they are written on cool Perl6 language!
Installing cpan modules
    
  $ cat sparrowfile

  use v6;

  use Sparrowdo;

  task_run  %(
    task => 'cpan-package',
    plugin => 'cpan-package',
    parameters => %( 
      list => 'CGI DBI',
      user => 'foo',
      install-base => '/home/foo'
    ),
  );

  $ sparrowdo --host=192.168.0.1
Installing packages
  
  $ cat sparrowfile

  use v6;

  use Sparrowdo;

  task_run  %(
    task => 'install my favorite packages',
    plugin => 'package-generic',
    parameters => %( 
      list => 'nano nginx curl'
    ),
  );

  $ sparrowdo --host=192.168.0.1
Running services
    
  $ cat sparrowfile

  use v6;

  use Sparrowdo;

  task_run  %(
    task => 'add nginx service to autostart',
    plugin => 'service',
    parameters => %( 
      name => 'nginx', action => 'enable'
    ),
  );

  task_run  %(
    task => 'start nginx service',
    plugin => 'service',
    parameters => %( 
      name => 'nginx', action => 'start'
    ),
  );

  $ sparrowdo --host=192.168.0.1
Using templates
    

$ cat sparrowfile

  use v6;
  
  use Sparrowdo;
  
  task_run  %(
    task => 'install my config',
    plugin => 'templater',
    parameters => %(
      variables => %(
        name => 'sparrowdo',
        language => 'perl6'
      ),
      target => '/etc/foo.conf',
      owner => 'user',
      mode => '644',
      source => slurp 'templates/foo.conf.tmpl'
    )
  );
  
  
  $ cat templates/foo.conf.tmpl
  
  Hello, my name is [% name %]!
  I speak [% language %]
  
  $ sparrowdo --host=192.168.0.1
Creating users and groups
    

$ cat sparrowfile

  use v6;
  
  use Sparrowdo;
  
  task_run  %(
    task => 'create user',
    plugin => 'user',
    parameters => %(
      variables => %( name => 'sparrow' )
    )
  );

  task_run  %(
    task => 'create users group',
    plugin => 'group',
    parameters => %(
      variables => %( name => 'sparrows' )
    )
  );
  
  $ sparrowdo --host=192.168.0.1