(R)?ex the friendly automation framework

News

2020-07-05
Rex-1.12.0

The Rex-1.12.0 release is now available on CPAN. It adds support for local rsync operations, improves tab completion for Bash and Zsh, and fixes related bugs. It also discontinues support for running Rex on Windows 7, Windows Server 2008 R2, and older versions since both mainstream and extended support has already ended for these products.

2020-06-09
Rex on StackShare

Thanks to the support from their amazing team, Rex is now listed on StackShare.

2020-06-05
Rex-1.11.0

The Rex-1.11.0 release is now available on CPAN. It enhances the behaviour of sysctl and file management, fixes bugs about group management and OpenSSH connection options, and clarifies quite a bit of documentation.

2020-05-05
Rex-1.10.0

The Rex-1.10.0 release is now available on CPAN (changelog). Apart from documentation updates and bug fixes, it adds initial package glob support, and an on_change hook for the mkdir command.

2020-04-05
Rex-1.9.0

The Rex-1.9.0 release is now available on CPAN, and it adds a new feature flag to force writing UTF-8 encoded files, documents configuration options, and fixes bugs.

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 1.0.0

Release notes for 1.0.0

We are proud to announce the 1.0.0 release of Rex. We want to thank every contributor that made this first major release possible. Rex 1.0 will be a LTS release, which means that it will get support from the community (at least) until march 2017.

We're developing Rex for more than 4 years and because Rex is now used in many production environments we felt it was the right time to release the first major version. We try to follow the semver versioning scheme, so that it is possible to have a good deprecation path if things change.

Rex is a project completely driven by volunteers and without all the support from the community by using it, sending bug reports and feature requests and submitting patches it wouldn't be the great project it is. So many thanks to all of you. If you want to help developing Rex and become part of the core team, feel free to contact us on irc (irc.freenode.net / #rex).

These are the changes in 1.0.0 release.

Common

With Rex 1.0 we changed the communication from libssh2 (Net::SSH2) to openssh (Net::OpenSSH) by default, because many of us already uses this and it was also the default if featureset 0.55 was enabled.

But you can always use the old communication with the following command:

⁠set connection => 'SSH';

augeas

With augeas it is possible to edit configuration files without the need to use templates and to overwrite all of the file. So if you want to allow people to edit the configuration files on your servers also by hand (for example on test machines for your developers) you can use augeas to ensure that some specific parameters in these configuration files are set.

To use this it is required to have augtool installed on your servers. This is usually in the package augeas or augeas-tools.

use Rex::Commands::Augeas;
⁠
⁠task "prepare", sub {
⁠    augeas
⁠      insert    => "/files/etc/hosts",
⁠      label     => "01",
⁠      after     => "/7",
⁠      ipaddr    => "192.168.2.23",
⁠      canonical => "frontend01";
⁠
⁠    augeas modify =>
⁠      "/files/etc/ssh/sshd_config/PermitRootLogin" => "without-password",
⁠      on_change                                    => sub {
⁠        service sshd => "restart";
⁠      };
⁠};

PkgConf

The PkgConf commands are especially usefull on debian/ubuntu systems to query and to modify package configurations. For example if you want to configure the mysql root password during package installation. To see more example please refer to the API documentation.

use Rex::Commands::PkgConf;
⁠
⁠task "prepare", sub {
⁠    set_pkgconf(
⁠        "mysql-server-5.5",
⁠        [
⁠            {
⁠                question => 'mysql-server/root_password',
⁠                type     => 'string',
⁠                value    => 'mysecret'
⁠            },
⁠            {
⁠                question => 'mysql-server/root_password_again',
⁠                type     => 'string',
⁠                value    => 'mysecret'
⁠            },
⁠        ]
⁠    );
⁠};

tty usage

If you're using use Rex -feature => ['1.0']; tty usage is disabled. This increases the compatibility with some init scripts that don't disown from the running tty. If you're using sudo then you need to configure the user to not need a tty to run sudo.

Defaults:username !requiretty

If you can't change this behaviour you can always use the tty feature to tell Rex to spawn a tty.

use Rex -feature => [ '1.0', 'tty' ];

base

Internal

Testing

Bugfixes

Proudly powered by Statocles

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