Permalink
Newer
Older
100644 132 lines (101 sloc) 4.13 KB
Sep 9, 2011
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<title>tele</title>
5
<meta content='text/html; charset=utf-8' http-equiv='Content-Type' />
6
</head>
7
<body>
8
<pre>
9
<strong>TELE</strong>(1)
10
11
<strong>NAME</strong>
12
tele -- Provisioning at a distance.
13
14
<strong>SYNOPSIS</strong>
15
tele [-h] [-d path] (init|deploy)
16
17
<strong>DESCRIPTION</strong>
18
Tele is a small provisioning framework that allows you to run
19
bash scripts on remote servers over SSH. It uses your own SSH,
20
not a Ruby version, so you can profit from your settings and
21
public/private keys.
22
23
It uses the following directory structure to store the recipes and
24
configuration files:
25
26
.tele/layout.json
27
.tele/ssh_config
28
.tele/recipes/redis.sh
29
.tele/recipes/unicorn.sh
30
31
In the example, there are recipes for Redis and Unicorn. Please
32
note that you are in charge of creating them.
33
34
layout.json
35
The server layout, with the available roles and servers.
36
Example:
37
38
{
39
"roles": {
40
"db": ["redis"],
41
"web": ["ruby", "unicorn"],
42
"app": ["db", "web"]
43
},
44
45
"servers": {
46
"app-1": ["db", "web"],
47
"app-2": ["db"],
48
"app-3": ["app"]
49
}
50
}
51
52
The key "roles" stores a tree, where each key is mapped to an
53
array of recipes. The leaves--those elements in the tree that
54
are not present as keys--are the ones that have to be available
55
as bash scripts. In this example, both "redis" and "unicorn"
56
are leaves, while "db", "web" and "app" are recipes composed of
57
other recipes.
58
59
The key "servers" stores a map of servers to roles. The keys
60
can be either hostnames declared in .tele/ssh_config or IP
61
addresses.
62
63
ssh_config
64
Configuration file for the SSH connection. Check the SSH_CONFIG
65
man page for more information.
66
67
The following options are available:
68
69
-h
70
Displays this help message.
71
72
-d path
73
Sets path as the directory where tele will search for scripts
74
and configuration files. You can also use the environment
75
variable TELE_HOME.
76
77
init
78
Copies a .tele template to the current directory.
79
80
deploy
81
Runs every recipe script on the servers declared in
82
layout.json. The exit code must be 0 if the command was
83
successful.
84
85
tail
86
Displays standard output and standard error from each running
87
recipe.
88
89
<strong>USAGE</strong>
90
To provision two servers called `server1` and `server2` with Redis,
91
starting from scratch:
92
93
# Create the .tele directory.
94
$ tele init
95
96
# Create the Redis recipe.
97
$ echo "which redis-server || sudo apt-get install redis" > .tele/recipes/redis.sh
98
99
# Edit .tele/layout.json as follows:
100
101
{
102
"roles": {
103
"db": ["redis"]
104
},
105
106
"servers": {
107
"server1": ["db"],
108
"server2": ["db"]
109
}
110
}
111
112
# Edit .tele/ssh_config:
113
114
Host server1
115
Hostname 10.0.0.1
116
117
Host server2
118
Hostname 10.0.0.2
119
120
# Run tele deploy
121
$ tele deploy
122
123
<strong>INSTALLATION</strong>
124
$ gem install tele
125
126
<strong>CODE</strong>
127
This project is open source, and the code is available
128
at <a href="https://github.com/djanowski/tele">https://github.com/djanowski/tele</a>.
129
</pre>
130
</body>
131
</html>