This zip-file contains files which can be used with the configuration management
 systems Ansible and Fabric, as well as a convenience ssh_config file.

Included are:

============
Common files
============

id_rsa
------
A private SSH key which can be used to login to all resources who support
public key-authentication.

*** This file needs to be properly secured to allow SSH and Ansible to
*** function correctly.
*** This can be done by issuing the following command:

$ chmod 600 id_rsa

id_rsa.pub
----------
The public SSH key which has been registered on all resources in your experiment.

ssh-config
----------
SSH configuration for each resource in your experiment.  You can SSH to any
resource by referencing to it with you "<experiment name>.<resource client-id>'.

For example, to login to 'node0' of 'exp1':

$ ssh -F ssh-config exp1.node0

Other commands like scp work in the same way, but it is necessary to
specify the -F option as above.

=======
Ansible
=======

Ansible is an open-source software platform for configuring and managing
computers. It combines multi-node software deployment, ad hoc task execution,
and configuration management. It manages nodes over SSH and requires
Python (2.4+) to be installed on them.

It is very well documented and easy to use.
For more information on Ansible, see: http://docs.ansible.com/

ansible-hosts
-------------
An Ansible inventory file to make it easy to run commands across all
your resources.  Ansible is a free, open-source utility that is
available for most platforms.

Some sample Ansible commands that you can use:

# To make sure all the slivers are up and you can login:
$ ansible nodes -i ansible-hosts -m ping

# To run the 'uptime' command in parallel on all slivers:
$ ansible nodes -i ansible-hosts -m shell -a "uptime"

# To install the 'iperf' package in all the slivers
$ ansible nodes -i ansible-hosts --sudo -m apt -a "name=iperf state=present"

ansible.cfg
-----------
This configuration file defines the location of the SSH private key, and
disables host-key checking, as this can lead to failures when trying to repeat
an experiment.

======
Fabric
======

Fabric is a Python library and command-line tool for streamlining the use of
SSH for application deployment or systems administration tasks.

It provides a basic suite of operations for executing local or remote shell
commands (normally or via sudo) and uploading/downloading files, as well as
auxiliary functionality such as prompting the running user for input, or
aborting execution.

For more information on Fabric, see: http://www.fabfile.org/

fabfile.py
----------
In this fabfile, each resource has been mapped into a role with it's client-id
for convenient referencing. To execute a command on each resource, you can use
the 'all'-role.

Some sample Fabric commands that are currently configured by this file:

# To run the 'uptime' command in parallel on all slivers:
$ fab -R all uptime

# To test that all slivers have connectivity to 8.8.8.8:
$ fab -R all pingtest

# To run 'uptime' only on 'node0' of experiment 'exp1':
$ fab -R exp1.node0 uptime

Use these examples to extend the fabfile according to the needs of
your experiment.