(R)?ex Deployment & Configuration Management

News

2019-06-09
Post-migration updates & clean-up

Over the course of the past weeks many clean-ups have been done, reaping the benefits provided by our new Statocles-based site:

2019-05-19
New site engine for rexify.org

After months of work on a new site backend, we reached the MVP today for our site to be switched over to a new engine: from now on, our site will be maintained using the static site generator Statocles.

Conferences

2016-06-21

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 » Release notes for 0.41

Release notes for 0.41

Common

Copy to clipboard

task "prepare", "mysystem01", sub {
    install "ntp";
    say last_command_output;
};

Copy to clipboard

task "prepare", "mysystem01", sub {
   my @env = cron env => user => list;
   cron env => user => add => {
      MYVAR => "foo",
   };
   cron env => user => delete => "MYVAR";
};

This module doesn't use rsync, so it works with sudo and Windows, too. And it is also possible to use it with templates. If a file should be used as a template, you have to name it somefile.ext.tpl.

Copy to clipboard

task "prepare", "mysystem01", sub {
   # upload directory recursively to remote system. 
   sync_up "/local/directory", "/remote/directory";

   sync_up "/local/directory", "/remote/directory", {
      # setting custom file permissions for every file
      files => {
         owner => "foo",
         group => "bar",
         mode  => 600,
      },
      # setting custom directory permissions for every directory
      directories => {
         owner => "foo",
         group => "bar",
         mode  => 700,
      },
   };

   # download a directory recursively from the remote system to the local machine
   sync_down "/remote/directory", "/local/directory";
};

To get a list of all returned information:

Copy to clipboard

use Data::Dumper;
my %hw_info = Rex::Hardware->get(qw/VirtInfo/);
print Dumper(\%hw_info);

To get the hypervisor:

Copy to clipboard

task "info", "mysystem01", sub {
   my %hw_info = Rex::Hardware->get(qw/VirtInfo/);

   say "Role: " . $hw_info{VirtInfo}->{virtualization_role};
   say "Type: " . $hw_info{VirtInfo}->{virtualization_type};
};

Copy to clipboard

task "prepare", "myserver01", sub {
   my $package = case operating_system, {
                     Debian => "vim",
                     CentOS => "vim-enhanced",
                     default => "vim",
                 };

   install $package;
};

Copy to clipboard

   $instance = cloud_instance create => {
             image_id => "ami-5187bb25",
             name     => "test01",
             key      => "thekey",
             zone     => "eu-west-1a",
             type     => "m1.large",
             security_groups => ["alltcpfoo", "default"],
          };

Documentation

Rex/Gearman

Rex/Boxes

Copy to clipboard

type: VBox
#vbox:
#   headless: 1
vms:
   -  name: mem01
      url: http://box.rexify.org/box/ubuntu-server-12.10-amd64.ova
      network:
         1:
            type: bridged
            bridge: "en0: Ethernet"
      setup: setup_memcache
   -  name: db01
      url: http://box.rexify.org/box/ubuntu-server-12.10-amd64.ova
      network:
         1:
            type: bridged
            bridge: "en0: Ethernet"
      setup: setup_db
   -  name: www01
      url: http://box.rexify.org/box/ubuntu-server-12.10-amd64.ova
      network:
         1:
            type: bridged
            bridge: "en0: Ethernet"
      setup: setup_frontend
Google Group / Twitter / GitHub / Mailinglist / irc.freenode.net #rex   -.ô.-   Disclaimer