Distributed tools, aka dtools is a project written in bash coding to create a suite of programs to allow running different UNIX commands in parallel in a list of tagged hosts.

Andrés J. Díaz a4a934fb44 Fix patter_ec2 1 month ago
contrib d64ba8c99c Add a set of utilities for shell. 6 years ago
doc 85cf20e457 Add Makefile 1 year ago
lib a4a934fb44 Fix patter_ec2 1 month ago
Makefile 85cf20e457 Add Makefile 1 year ago
README a2ff4a8f37 Add a custom command example. 6 years ago
dt a4a934fb44 Fix patter_ec2 1 month ago
dtcompact 13e7cee39e Fix some bugs in ec2 1 year ago
dthost 1a658abda9 Minor changes in filters and dt output 4 years ago
dtsh 243246513d Fix some minor errors in dt shell 1 year ago
dtstatus 1a658abda9 Minor changes in filters and dt output 4 years ago

README

dtools
======
Distributed tools, aka dtools is a project written in bash coding to
create a suite of programs to allow running different UNIX commands
in parallel in a list of tagged hosts. This utility is based on
capistrano for Ruby or fabric for Python, but in pure bash.

Features
--------

* Fully written in bash, no third party software required
(except ssh, obviously).
* Based in module architecture, easy to extend.
* Full integration with ssh.
* Easy to group hosts by tags or search by regular expression.
* Parseable output, but human-readable
* Thinking in system admin, no special development skills
required to extend the software.

Short Example
-------------

$ dt tag:linux ssh date
okay::dt:ssh:myhostlinux1.domain:Mon Nov 16 23:54:04 CET 2009
okay::dt:ssh:myhostlinux3.domain:Mon Nov 16 23:54:04 CET 2009
okay::dt:ssh:myhostlinux2.domain:Mon Nov 16 23:54:04 CET 2009

Create own commands
-------------------

Usually the sysadmin works involves large and hard maintenance tasks, more
of them can be easily automated by a single script, to work this taks, dt
includes since version 3.1 the command *script*. So lets suppose that you
have an script that create a number of users, for example. Then you can
run

$ dt tag:linux script create_users.sh
okay::dt:ssh:myhostlinux1.domain:created users joe, eve, bob
okay::dt:ssh:myhostlinux2.domain:created users joe, eve, bob
okay::dt:ssh:myhostlinux3.domain:created users joe, eve, bob


However not always is too easy. for example in some situations you need to
copy files and performs any other actions. In this case you can create your
own commands, just creating a bash file in $HOME/.dtools/commands directory,
(or also $HOME/.dtools/patterns for patterns), for example in contrib/
directory you can found a single deploy command.