Motivation
The Problem
You could do this simply on the command line with a shell script like:
for hosts in hosta hostb hostc
do ssh $host do_something
done
This has several disadvantages that tentakel tries to address:
- It is slow, because each process must finish before the next can start.
- Managing many sets of hosts can become a complicated task.
- The output is as provided by the program that is run remotely.
- The output is hard to read because there are no signs when the output for a specific host begins or ends.
History
So the first version of tentakel was a bourne shell script, that did solve exactly those problems. It could start several subshells in parallel and wait for the ssh commands in those subshells. Output was saved in temporary files and printed when all commands had finished.
Soon it turned out that writing compatible bourne shell code that could run on any Unix-like platform and maintaining extensibility and features was nearly impossible. This was the reason for the switch to the Python language.
After that decision (and a complete rewrite of tentakel) new functionality like format strings and configuration file parsing could be done much easier. Especially the configuration file is much more useful now.
Other projects
There are other projects trying to solve this problem. Some of them have similar features, some have more, some have less. Some of them are listed in the similar programs section.
