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:
ssh-copy-id [email protected].
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.
ssh [email protected] sudo su
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
nano /etc/ssh/sshd_config PermitRootLogin no PasswordAuthentication no
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:
sudo su 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 update 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
sudo su cd /usr/local/src 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:
cd RexHead perl Makefile.PL make make test make install
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