Install Rex server
Since Rex is using SSH as its transport layer, we only have to install Rex on one central instance, called rex server. We do not need to install anything on all the other servers, except OpenSSH, of course. At the beginning we configure basic security (SSH) and setup a user for Rex.
Setup the Rex user
Now add a user for Rex:
sudo adduser rex
sudo adduser rex sudo
Go back to your client, and copy your public key into rex user:
ssh-copy-id [email protected]
Login to the rex user on the rex server
The rex user will need a private/public keypair, in order to login into the servers without password authentication. For that reason, we generate this keys on the rex server, without passphrase, just accept the defaults!
ssh-keygen -t rsa
I'm using the rex user, created above, to login to the all the servers. First login as rex user at the rex server, and copy its public key to the root user, or a user with all the sudo rights, on all the servers you are going to manage by rex:
Now test the SSH login with your keypair and make sure it works because we're going to disable any other login method. Make sure this user can use sudo too.
When this works on all the server, ...
Basic SSH setup
Since the rex server will have access to all your servers, pay more attention to its security config: disable root login as well as disable login with passwords. Change in
or permit only key authentication for root login, not via password, like
Restart the ssh daemon by
service ssh restart.
Install Rex via APT repository
It is the most simple way, just prepare the Rex repository and simple install rex via apt-get. On Ubuntu Precise (12.04) LTS:
echo 'deb http://rex.linux-files.org/ubuntu/ precise rex' >> /etc/apt/sources.list.d/rex.list
wget -O - http://rex.linux-files.org/DPKG-GPG-KEY-REXIFY-REPO | apt-key add -
apt-get install rex
Lots of Perl libraries will be installed, next to Rex binaries, see the perl modules i.e. at
Install Rex from source code on Github
You find the repository of Rex here. Install a particular version (i.e. 0.40) is easy, since each version is a git branch. First we need to install the tools we need to compile the source code to binaries, as well as Git:
sudo apt-get install build-essential
sudo apt-get install git
Then we need few libraries, on which Rex depends, using Ubuntu Precise (12.04) LTS:
sudo apt-get install libdbi-perl libexpect-perl libdigest-hmac-perl libhttp-date-perl libjson-xs-perl libyaml-perl libxml-simple-perl libnet-ssh2-perl
Now we download the latest source code from github.com into a directory in
git clone https://github.com/krimdomu/Rex.git RexHead
If you want to have a particular Rex version, use this, for example to get Rex 0.40:
git clone -b 0.40 https://github.com/krimdomu/Rex.git Rex040.
Next step is to build binaries from source, still as root, switch into the Rex source directory and compile the binaries. Do not forget to do it as root:
perl Makefile.PL make
The code will be installed into few directories in
/usr/local/bin: the two executables of Rex (rex and rexify)
/usr/local/lib: the package list (see /usr/local/lib/perl/5.14.2/auto/Rex)
/usr/local/share: the perl modules (see in /usr/local/share/perl/5.14.2) and the man pages (/usr/local/share/man)
If you want to install another Rex version, delete these files from
/usr/local, clone the source code in an other version from Github, and compile again. To delete previous Rex version from
sudo rm /usr/local/bin/rex
sudo rm /usr/local/bin/rexify
sudo rm -rf /usr/local/share/perl/5.14.2
Ready, steady, go...
First, check Rex version:
gives something like
To start, go to your home and switch back to your user, and type
Rex generates for you the first templates to start the journey.
rex -T rex blabla