Before Ansible or Chef, Distributed Shell.
Thanks to the universal operating system to make it easy:
$ sudo apt-get install dsh
Boo… compiling, I only can compilete correctly in RHEL/CentOS 5,6 and 7 the versión 0.23.12 and libdshconfig-0.20.10.cvs.1:
$ sudo yum install gcc gcc-c++ make $ wget https://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.23.12.tar.gz $ wget https://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.10.cvs.1.tar.gz $ tar -zxvf libdshconfig-0.20.10.cvs.1.tar.gz $ cd libdshconfig-0.20.10.cvs.1 $ ./configure && make $ sudo make install $ cd .. $ tar -zxvf dsh-0.23.12.tar.gz $ cd dsh-0.23.12 $ ./configure && make $ sudo make install $ cd ..
$ sudo yum install gcc gcc-c++ make $ wget https://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.25.10.tar.gz $ wget https://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.13.tar.gz $ tar -zxvf libdshconfig-0.20.13.tar.gz $ cd libdshconfig-0.20.13 $ ./configure && make $ sudo make install $ cd .. $ tar -zxvf dsh-0.25.10.tar.gz $ cd dsh-0.25.10 $ ./configure && make $ sudo make install $ cd ..
You will receive a message similar to this:
dsh: error while loading shared libraries: libdshconfig.so.1: cannot open shared object file: No such file or directory
You need configure ssh as remote shell in file /usr/local/etc/dsh.conf
remoteshell =ssh
If you want parallel connections you must change:
waitshell=0
You can configure LD_PATH_LIBRARY to include /usr/local/lib. In my case I created a alias in $HOME/.bashrc file:
alias dsh='LD_LIBRARY_PATH=/usr/local/lib dsh'