(R)?ex Deployment & Configuration Management

Search

News

2016-09-08

Work with (R)?ex at adjust! Check out their job posting for details, or contact our fellow core developer, FErki.

2016-07-16

(R)?ex 1.4.1 released, fixing many bugs. See the release notes for more details.

2016-03-07

(R)?ex 1.4.0 released, containing lots of goodies. See the release notes for more details.

2015-09-04

(R)?ex 1.3.3 released, fixing a bunch of bugs. See the release notes for more details.

2015-06-22

adjust GmbH is sponsoring the (R)?ex project with a new build server. Thank you for your support!

2015-06-17

(R)?ex 1.3.2 released, fixing issues related to file manipulation when run on BSDs. See the release notes for more details.

2015-06-08

(R)?ex 1.3.1 released, fixing Rex::Commands::DB related tests.

2015-05-27

Read the second part of "Rex in practice" series about Test-driven infrastructure.

2015-05-09

repositor.io 1.1.0 released. repositor.io is a repository management tool for apt, yum, yast and docker. This is a bugfix release with fixes for ubuntu and centos7 installation media mirroring.

2015-05-03

(R)?ex 1.2.0 released. See the release notes for more details.

2015-03-27

View the slides of the talk An introduction to Rex from Andy Beverley.

Conferences

2016-06-21

Training

Need Help?

Rex is a pure open source project, you can find community support in the following places:

Professional support is also available.

» Home » Docs » Release notes » 0.35

Release notes for 0.35

There are now 2 new websites:

A website where you can search for Rex modules and browse their documentation.

A website where you can download prebuilt Boxes and find information about Rex/Boxes. A module for easy deployment of development boxes (currently only VirtualBox is supported).

General

Copy to clipboard
use Rex::Commands::Virtualization;

set virtualization => "VBox";

use Data::Dumper;   

print Dumper vm list => "all";
print Dumper vm list => "running";

vm destroy => "vm01";

vm delete => "vm01"; 

vm start => "vm01";

vm shutdown => "vm01";

vm reboot => "vm01";

vm option => "vm01",
         memory     => 512;

print Dumper vm info => "vm01";

# creating a vm 
vm create => "vm01",
      storage     => [
         {   
            file   => "/mnt/data/vbox/vm01.img",
         }
      ],
      memory => 512,
      type => "Linux26", 
      cpus => 1,
      boot => "cdrom";

Functions to easily work with VirtualBox images.

Copy to clipboard
 use Rex::Commands::Box;

 task "init", sub {

   my $param = shift;

   box {
      my ($box) = @_;
      $box->name($param->{name});
      $box->url($param->{url});
      $box->network(1 => {
         type => "nat",
      });

      # only works with network type = nat
      # if an ssh key is present, rex will use this to log into the vm
      # you need this if you don't run VirtualBox on your local host.
      $box->forward_port(ssh => [2222 => 22]);

      $box->share_folder("myhome" => "/home/jan");

      $box->auth(
         user => "root",
         password => "box",
      );

      $box->setup(qw/install_webserver/);
   };

 };

 task "down", sub {

   my $param = shift;

   my $box = Rex::Commands::Box->new(name => $param->{name});
   $box->stop;
 };

 task "install_webserver", sub {
   install "apache2";
 };
Copy to clipboard
 # Rexfile

 task foo => sub {
 };
 task example => sub {
 };
 task example2 => sub {
 };

  set auth for qr{^example\d$} =>
     user => "example",
     password => "foob4r";
Copy to clipboard
 task "add-repo", "server1", "server2", sub {
   repository add => myrepo => {
      Ubuntu => {
         url => "http://foo.bar/repo",
         distro => "precise",
         repository => "foo",
      },
      Debian => {
         url => "http://foo.bar/repo",
         distro => "squeeze",
         repository => "foo",
      },
      CentOS => {
         url => "http://foo.bar/repo",
      },
   };
 };

The key that is used is the return value of get_operating_system().

It is also possible to add an after hook like this:

Copy to clipboard
 task "add-repo", "server1", "server2", sub {
   repository add => myrepo => {
      Ubuntu => {
         url => "http://foo.bar/repo",
         distro => "precise",
         repository => "foo",
         after => sub {
              # import gpg key
         },
      },
      Debian => {
         url => "http://foo.bar/repo",
         distro => "squeeze",
         repository => "foo",
         after => sub {
              # import gpg key
         },
      },
      CentOS => {
         url => "http://foo.bar/repo",
         after => sub {
              # import gpg key
         },
      },
   };
 };
Fork me on GitHub
Google Group / Twitter / GitHub / Mailinglist / irc.freenode.net #rex   -.รด.-   Disclaimer