TELE(1)
NAME
paratele -- Provisioning at a distance.
SYNOPSIS
paratele [-h] [-d path] (init|run)
DESCRIPTION
Tele is a small provisioning framework that allows you to run bash
scripts on remote servers over SSH. It uses your own SSH, not a Ruby
version, so you can profit from your settings and public/private keys.
It uses the following directory structure to store the recipes and
configuration files:
.tele/layout.json
.tele/ssh_config
.tele/recipes/redis/status.sh
.tele/recipes/redis/install.sh
.tele/recipes/unicorn/status.sh
.tele/recipes/unicorn/install.sh
In the example, there are recipes for Redis and Unicorn. Please note that you are in
charge of creating them.
layout.json
The server layout, with the available roles and servers. Example:
{
"servers": {
"app-1": ["redis"],
"app-2": ["ruby", "unicorn"],
"app-3": ["ruby", "resque"]
}
}
The key "servers" stores a map of servers to roles. The keys can be
either hostnames declared in .tele/ssh_config or IP addresses.
ssh_config
Configuration file for the SSH connection. Check the SSH_CONFIG man
page for more information.
The following options are available:
-h
Display this help message.
-d path
Sets path as the directory where tele will search for scripts and
configuration files. You can also use the environment variable
TELE_HOME.
-v
Print output from servers for all roles, whether they succeed or
not. The default is to print output from servers only if a recipe
fails.
-q
Don't print output from servers locally.
init
Copies a .tele template to the current directory.
run command
Runs every <recipe>/<command>.sh script on the servers declared
in layout.json, in the specified order. The scripts must have an
exit status of 0 on success, otherwise it will be counted as failed.
If a recipe fails, no more recipes for that server will be executed.
USAGE
To provision two servers called `server1` and `server2` with Redis,
starting from scratch:
# Create the .tele directory.
$ tele init
# Create directories for the recipes.
$ mkdir -p .tele/recipes/redis
# Create install.sh script (ommited).
# Edit .tele/layout.json as follows:
{
"servers": {
"server1": ["redis"],
"server2": ["redis"]
}
}
# Edit .tele/ssh_config:
Host server1
Hostname 10.0.0.1
Host server2
Hostname 10.0.0.2
# Run the install script for all recipes
$ paratele run install
# Run the deploy script for certain servers
$ paratele run deploy web1,db1
INSTALLATION
$ gem install paratele