Hay situaciones en las que se debe administrar muchos servidores mediante un punto central, o tener un mecanismo para preparar un servidor con una configuración especifica, hoy les hablo de una herramienta que nos permite hacer esto de una forma muy fácil. Se llama (R)?ex y esta basada en Perl. 
Lo simpático de esta herramienta es que no necesita un cliente como en el caso de Puppet de Ruby, simplemente nos basta una conexión por SSH para realizar la instalación, configuración y cualquier otra tarea que deseamos.

Entre las funciones principales de rex tenemos las siguientes:

  • Conexión a un servidor mediante SSH o con la opción de la clave privada. 
  • Instalación de paquetes usando los mecanismos nativos de cada distribución, APT o YUM. 
  • Subir o bajar archivos e incluso sincronizar directorios. 
  • Ejecutar comandos y si es necesario obtener la respuestas de estos. 
  • Uso de plantillas de configuración, preservando usuario dueño, permisos, etc… 
  • Ejecución en una serie de servidores. 
  • Está en las principales distribuciones de Linux. 
En caso de que todo lo anterior no nos parece suficiente, tenemos la gran posibilidad de extender su funcionalidad mediante el uso de Perl, esta herramienta cuentan con una API diseñada para administrar servidores. Todo está estructurado de una forma muy simple de entender y usar.
Les explico un breve ejemplo de como se instala, se configura y se usa para Ubunru 10.04 LTS y así se animen a implementarlo: 

Instalación:

echo 'deb http://rex.linux-files.org/ubuntu/ lucid rex' >> /etc/apt/sources.list
wget -O - http://rex.linux-files.org/DPKG-GPG-KEY-REXIFY-REPO | apt-key add -
apt-get update
apt-get install rex

Para otras distribuciones entre 

aquí.

Una ves instalada la herramienta, solo nos queda crear un directorio donde colocaremos nuestro script y todos los archivos necesarios para subir, plantillas etc. 
mkdir /home/usuario/rex/
cd /home/usuario/rex/

Y con un editor favorito editamos el script “web.pl” y agregamos el siguiente código:

user "root";
password "admin";
pass_auth;

group virtual => "10.211.55.5";

desc "Install and Configure Apache2 Web Server";
task "apache", group=> "virtual", sub {
install package => "apache2";

install file => "/etc/apache2/apache2.conf", {
source => "files/apache2.conf",
owner => "root",
group => "root",
mode => 644,
on_change => sub { say "File was modified!"; }
};

run "service apache2 restart";
};

El código anterior hace lo siguiente, se conecta a un servidor llamado virtual con la ip definida, usará el usuario root con la clave admin, existe una sola tarea que es la instalación y configuración de Apache, podemos ver que luego de instalarlo se copia un archivo de configuración, nos aseguramos que los permisos estén correctos y finalizamos reiniciando el servicio. 

Para ver las tareas definidas en el script ejecutamos el siguiente comando:

rex -f web.pl -T

Ejecutamos una tarea en especifico del script, en este caso la instalación y configuración de apache:

rex -f web.pl apache

Espero que se hayan animado de usar una herramienta que podemos guardar todas las configuraciones y comandos necesarios para administrar los servidores de una manera mucho mas eficiente, comoda, perezosa y segura.

Para mayor información y ejemplos debemos visitar la API y la Wiki: