djanowski/tele
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
TELE(1) NAME tele -- Provisioning at a distance. SYNOPSIS tele init tele deploy environment [-d path] tele exec environment command [-d path] tele -h DESCRIPTION Tele is a small provisioning framework that allows you to run shell 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.sh .tele/recipes/unicorn.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, environments and servers. Example: { "roles": { "db": ["redis"], "web": ["ruby", "unicorn"] }, "environments": { "staging": { "ec2-small": ["db", "web"] }, "production": { "linode-1": ["db"], "linode-2": ["web"] } } } The key "roles" stores a tree, where each key is mapped to an array of recipes. The leaves--those elements in the tree that are not present as keys--are the ones that have to be available as shell scripts. In this example, both "redis" and "unicorn" are leaves, while "db" and "web" are recipes composed of other recipes. The key "environments" stores a map of environments to servers to roles. Server names must correspond with an entry in .tele/ssh_config. ssh_config Configuration file for the SSH connection. Check ssh_config(5) for more information. The following options are available: -h Displays 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. init Copies a .tele template to the current directory. deploy environment Runs every recipe script on the servers declared in layout.json for the given environment. Deploying halts on the first failed recipe. exec environment command Runs an arbitrary command on all servers of the given environment. USAGE To provision two servers called `server1` and `server2` with Redis, starting from scratch: # Create the .tele directory. $ tele init # Create the Redis recipe. $ echo "which redis-server || sudo apt-get install redis" > .tele/recipes/redis.sh # Edit .tele/layout.json as follows: { "roles": { "db": ["redis"] }, "environments": { "development" { "server1": ["db"], "server2": ["db"] } } } # Edit .tele/ssh_config: Host server1 Hostname 10.0.0.1 Host server2 Hostname 10.0.0.2 # Run tele deploy $ tele deploy development INSTALLATION $ gem install tele
About
No description, website, or topics provided.
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published