Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: ae788d8ce6
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 121 lines (90 sloc) 3.452 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
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
Something went wrong with that request. Please try again.