What is (R)?ex

With (R)?ex you can manage all your boxes from a central point through the complete process of configuration management and software deployment.

Start exploring (R)?ex with this First Steps Guide.

We are always open for new suggestions and whishes. If you miss a feature just drop us a request.

Latest News

2012-05-08 (R)?ex 0.28.0 released. Mostly a bugfix release. See ChangeLog for a complete list of changes.

2012-05-05 (R)?ex 0.27.0 released. This release adds support for Ubuntu 12.04. See ChangeLog for a complete list of changes.

2012-03-11 (R)?ex 0.26.0 released. This release adds support to run everything within a sudo environment. See ChangeLog for a complete list of changes and examples.

2012-02-17 (R)?ex 0.25.3 released. Fixed a few bugs . See ChangeLog for more information.

2012-02-15 (R)?ex 0.25.2 released. Added commands to rexify to use the new community recipe directory. See for more information.

Features

Need Help?

Some Examples

Uptime?

This command line example will execute "uptime" on all the given hosts (frontend01, frontend02, ...).

rex -H "frontend[01..15] middleware[01..05] db[01..04]" -e "say run 'uptime'"

The same, but with a Rexfile

desc "Get uptime";
task "uptime", sub {
   say run "uptime";
};
rex -H "frontend[01..15] middleware[01..05] db[01..04]" uptime

Simple Website Deployment

This example will sync all files (and directories) in html to /var/www/rexify.org/html on the server rexify.org.


user "my-user";
password "my-password";

pass_auth;

desc "Upload website";
task "upload", "rexify.org", sub {

   sync "html/*", "/var/www/rexify.org/html";

};

Keep Your Configuration In Sync

This example will install the Apache Webserver on 5 servers and keep the configuration in sync. If the configuration file was changed it will automatically reload apache.

If this task gets executed against a virgin host (where no apache is installed) it will first install it.


user "root";

group "frontend" => "frontend[01..05]";

desc "Prepare Frontend Server";
task "prepare", group => "frontend", sub {

   install package => "apache2";

};

desc "Keep Configuration in sync";
task "configure", group => "frontend", sub {

   prepare();

   file "/etc/httpd/conf/httpd.conf",
        source => "files/etc/httpd/conf/httpd.conf",
        on_change => sub { service httpd => "reload"; };

};
Fork me on GitHub