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

FAQ

Here we will maintain a list of frequently asked questions with their answers.

Why does the run command not format the output?

The run command - called in array context - will return an array.

If you want to print the output to your terminal you have to call it in a scalar context.

my $output = run "df -h";
say $output;

How can I get the current server from within a task?

my $current_server = connection->server;

How can I pass parameters to a task?

task 'mytask', sub {
  my $parameters = shift;
  my $parameter1_value = $parameters->{parameter1};
  my $parameter2_value = $parameters->{parameter2};
};

Then you can run mytask from CLI like this:

rex -H hostname mytask --parameter1=value1 --parameter2=value2

How can I run a block of code with one command?

You can use the ShellBlock module. This module can be installed by running:

$ rexify --use Rex::Misc::ShellBlock

Then, you can run your shell code remotely as:

use Rex::Misc::ShellBlock;

task "myexec", sub {
  shell_block <<EOF;
    echo "hi"
EOF
};

See the linked documentation page for how to use this module with Perl, Python, or other languages.

How can I run a local script on the remote?

If you have a local script 'files/script', you can run it on the remote using the ShellBlock module referred to in the FAQ above. After you install as pointed out above, you can run the script remotely with the command:

use Rex::Misc::ShellBlock;
task "myexec", sub {
  shell_block template('files/script');
};

How do I run a local script on the remote under a different user?

Given the same scenario as above, but with the additional requirement to run the script as a different user, the solution looks like below:

use Rex::Misc::ShellBlock;
task "myexec", sub {
sudo {
command => sub {
shell_block template('files/script');
},
user    => 'root'
};
};

How do I check the exit status of a remotely run command?

Rex assigns the exit code from the remote invocation of run or shell_block statements to the $? variable.

How do I use Rex's built-in logger for ERROR/WARN/INFO/DEBUG messages?

Rex::Logger::info("some message");           # for INFO  (green)
Rex::Logger::info("some message", "warn");   # for WARN  (yellow)
Rex::Logger::info("some message", "error");  # for ERROR (red)
Fork me on GitHub
Google Group / Twitter / GitHub / Mailinglist / irc.freenode.net #rex   -.รด.-   Disclaimer