(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 » 1.4.0

Release notes for 1.4.0

This is a new minor release, adding new features, upgrade is recommended for all users.

As you may have noticed, the last release of Rex is around 6 months old. A lot has happened since then, and due to bigger internal changes, we wanted to be extra careful about the release, giving it as much time to bake as it needed.

The result is so far the biggest release of Rex, containing 4353 insertions and 1655 deletions happened to the lines of 118 files on 271 commits from 16 contributors, closing 93 PRs and 48 issues. To put it in perspective, this means ~30% of all files, and ~20% of all lines were touched in one way or another.

We couldn't have done this without the support of our fantastic community, keeping us busy with feedback, discussions both on- and offline, reporting issues, and sending pull requests. Thank you!

We are especially happy to have Eric Johnson (kablamo) to join the project as a new core developer. Most of the big things in this release were originally his ideas, and he was restless implementing them.

We would like to welcome H. Daniel Cesario, Harm Müller, Hiroki Matsuo, Jose Luis Perez Diez, Ken Crowell, Patrick Lauer, petersonchen, Prajithp as new contributors.

So as they say:

Good things come to those who wait

Highlights

New features

New Mkfs command

Now there's a dedicated Mkfs command, split out from LVM and partition handling modules, to deal with file system creation.

Improved argument parsing

As a preparation of another planned feature, it is now possible to pass arguments and CLI options to rex tasks, even if multiple ones are asked to be run. Please be aware this might not be a fully backwards compatible change for your use case. This feature is enabled by the 1.4 feature flag, but you can disable it with no_task_chaining_cmdline_args.

For example:

rex lib:task1 --option1=value1 lib:task2 --option2=value2
rex lib:task1 --option=value1 lib:task2 --option=value2
rex lib:task1  --option=value

New supported OSes

Managing Arch Linux is now supported via a completely new module, while Linux Mint and Raspbian are being recognized as Debian clones.

ParamLookup

Rex::Ext::ParamLookup from the RexOps/rex-recipes repository is now living in core as Rex::Helper::Rexfile::ParamLookup.

param_lookup is a command to manage task parameters.

my $var = param_lookup "param_name", "default_value";

First param_lookup checks the task parameters for param_name. If it's not found, it tries to look it up from CMDB (if CMDB is used). If it's still not found, it falls back to default_value. Additionally it registers the parameters as template values.

Summary output

Now there's a short summary displayed at the end of each run, containing success/failure info of the executed tasks. If there were any errors, they are listed by remote machine (ordered by hostname).

Firewall handling

There's a new firewall resource to manage firewall rules.

firewall "open-port-82-for-1.2.3.4",
    ensure => "present",
    action => "accept",
    port   => 82,
    source => "1.2.3.4";

The UFW firewall provider has been moved from rex-recipes to core too, and it is now available on top of the default iptables provider.

On top of that, IPv6 support has been added.

open_port, [22, 80];    # defaults to IPv4 rule
open_port -4, [22, 80]; # IPv4 rule
open_port -6, [22, 80]; # IPv6 rule

CMDB

Now CMDB can contain template code too.

Enhancements

Crontab handling

Unprivileged users can now manage their own crontabs.

Templates

Rexfile/module loading

The way of loading Rexfile and modules, has completely been refactored, making it easier to detect potential errors, and giving more useful feedback about them.

Guest VM options

Now it is possible to set CPU and memory options for (test) VMs.

Documentation

General

A bunch of general enhancements happened:

Full list of commits:

Bugfixes

Shared variables

Previously there was a race condition while using Rex::Shared::Var to share variables across tasks.

Templates

AWS handling

We now use AWS::Signature4 to talk to Amazon services.

Draining IO in parallel

The previous way to drain STDOUT/STEDERR output of a remote (or for that matter, local) connection proved to be, let's say suboptimal, leading to potential hangs, and other weirdness. This now has been fixed, moved to a common codebase, and we cover it with tests.

General

The reporting feature had some troubles when using bulk_install, so until a proper fix, Rex now simply falls back to sequential package installation as a workaround.

On top of that, the most notable bug fixes are realted to task hooks and continuous reading of output.

Full list of commits:

Fork me on GitHub
Google Group / Twitter / GitHub / Mailinglist / irc.freenode.net #rex   -.ô.-   Disclaimer