Shiva

Shiva is an open source batch based mass OpenSSH written in Bash

 

Why

Shiva is a mass OpenSSH client written from the ground up to be simple and extensible. Shiva is built on top of the standard OpenSSH client. Configuration options are architected to be sane by default. The command line interface is written to be extremely intuitive and comfortable for a systems administrator to use. Basic workflows such as adding host keys or listing servers in a group are available through command line options. Options which are commonly used can be added to a central configuration file which simplifies command line options. Shiva was written to take advantage of background functions in Bash. This makes it easy to extend with features such as connecting to Satellite Server/Spacewalk/Systems Engine/Katello for group information.

 

The Basics

In particular Shiva was written to use Satellite Server as the mechanism for managing system groups. When system groups are built from within Satellite/Spacewalk, they can be used as groups passed to Shiva. This allows an administrator to ssh into these groups of servers.

 

Download

Source Repository

 

Issue Tracker

Issues, bugs and problems can be reported and tracked on Google Code

Issue Tracker

 

Routine Operations

Installation

Shiva comes with a basic installation command. At the end, it will have you review the default server list and shiva.conf file. By default spacecmd support will be off.

./install.sh

 

List Groups

List groups that Shiva of which Shiva is aware. Local file groups are listed first, followed by groups found in Satellite Server/Spacewalk.

shiva -l
akron_lab
dallas_lab
default
crunchtools_lab

 

List Servers in Group

List servers contained in a particular group without having to go look in local file or Satellite.

shiva -L crunchtools_lab
akron.crunchtools.com
chicago.crunchtools.com
cleveland.crunchtools.com
columbus.crunchtools.com
keith.crunchtools.com
madison.crunchtools.com
milwaukee.crunchtools.com

 

Run Command Across Group

Run the same command across a group of servers as a batch process. All output will be returned when the last server completes. The list of successful/failed servers is returned in the same format as the group file. This is convenient for running follow up commands on the group of servers for which a command has failed.

shiva -g crunchtools uptime
=== akron.crunchtools.com ===
 08:14:24 up 8 days, 23:54,  0 users,  load average: 1.00, 1.00, 1.00

=== chicago.crunchtools.com ===
 03:49:57 up 2 days, 16:27,  1 user,  load average: 0.00, 0.00, 0.00

=== cleveland.crunchtools.com ===
 08:13:52 up 8 days, 23:54,  0 users,  load average: 3.00, 3.00, 3.00

=== columbus.crunchtools.com ===
 08:11:17 up 8 days, 23:51,  1 user,  load average: 3.00, 3.00, 3.00

=== keith.crunchtools.com ===
 23:50:05 up 2 days, 18:40,  7 users,  load average: 0.12, 0.09, 0.06

=== madison.crunchtools.com ===
 23:50:11 up 13 days,  3:06,  0 users,  load average: 0.00, 0.00, 0.00

=== milwaukee.crunchtools.com ===
 03:50:14 up 13 days,  3:06,  0 users,  load average: 0.49, 0.17, 0.06


Shiva from keith.crunchtools.com: Completed, 7 client(s)

Start time: Tue Oct 30 23:49:52 EDT 2012
End time:   Tue Oct 30 23:50:16 EDT 2012

=== Successful ===
akron.crunchtools.com
chicago.crunchtools.com
cleveland.crunchtools.com
columbus.crunchtools.com
keith.crunchtools.com
madison.crunchtools.com
milwaukee.crunchtools.com

 

Add Host Keys

Auto adding of host keys is off by default and configurable in shiva.conf. Host keys can also be accepted by running the following command.

shiva -A -g crunchtools_lab uptime
...

 

Philosophy

  • Sane by default, works out of the box
  • Designed to follow the Unix philosophy of small fast and easy to use
  • Intersect, not overlap, with other tools such satellite/puppet.

Current Features

  • Sane by default, works out of the box(sanebydefault.com)
  • Default groups from files and Satellite
  • Custom group files can be passed as a command line option
  • List groups and group members for convenience
  • Default configuration file and command line option to pass custom configuration file
  • Can automatically trust host files for first connect to server groups
  • Command line option to pass user other than root
  • Fingerprints, useful in identifying and eliminating reboot signatures
  • Different output options for wide screen terminals and character selection

Roadmap

  • Add support for groups in Katello/Systems Engine
  • Add configurable command timeout