tug v0.1.8
tug
tug at the heart of your deployment process

Tug is a super-simple tool to make remote server administration a tiny bit easier. It lets you define common tasks as sets of shell scripts, and provides a simple way to execute those scripts remotely from the comfort of your local shell.
1. Install
Install tug globally with npm install -g tug
2. Define a tug script
We want to deploy our website, boat.com, by pulling updates from a git repository, building the dependencies, and restarting the HTTP daemon. We have three load-balanced web servers and we need to perform the same steps on each.
Make sure each host has an entry in ~/.ssh/config, and create a .tug file called ~/.tug/boat.tug:
[hosts]
www1.boat.com
www2.boat.com
www3.boat.com
[step update]
cd ~/project
git pull
[step build]
cd ~/project
make
[step restart]
nginx -s reload3. tug
By default the first step in the tugfile is run:
tug boat[www1.boat.com]
... git updated
[www2.boat.com]
... git updated
[www3.boat.com]
... git updatedTo run all steps, use the -a or --all option:
tug boat -a[www1.boat.com]
... git updated
... project built
... nginx reloaded
[www2.boat.com]
... git updated
... project built
... nginx reloaded
[www3.boat.com]
... git updated
... project built
... nginx reloadedRunning specific steps
Perhaps you need to reload nginx but don't need or want to update the repository. Steps can be specified on the command line with the --steps or -s option.
tug boat -s restart[www1.boat.com]
... nginx reloaded
[www2.boat.com]
... nginx reloaded
[www3.boat.com]
... nginx reloadedOptionally specify multiple steps to run in order, separated with commas:
tug boat -s build,restartRunning on specific hosts
Use the --hosts or -h option to specify hosts to execute steps on, e.g.:
tug boat --hosts www2.boat.com
tug boat -h www3.boat.com --steps updateAgain optionally specify multiple with commas:
tug boat -h www2.boat.com,www3.boat.com -s update,buildLocal .tug files
As an alternative to using a central ~/.tug directory, you can include a single .tug file in your project directory. Tug will look for this file if a name is not specified:
cd test
tug -a[www.test.com]
... git updated
... project built
... nginx reloaded