(R)?ex the friendly automation framework

News

2020-03-05
Rex-1.8.2

The Rex-1.8.2 release is now available on CPAN, fixing a bug related to task hooks.

2020-02-05
Rex-1.8.1

The Rex-1.8.1 release is now available on CPAN, improving release automation, packaging, and documentation.

2020-01-05
Rex-1.8.0

The Rex-1.8.0 release is now available on CPAN, adding initial support to manage Void Linux systems.

2019-12-05
Rex-1.7.1

The Rex-1.7.1 release is now available on CPAN, fixing a Windows testing issue, and updating some docs.

2019-11-05
Rex-1.7.0

The Rex-1.7.0 release is now available on CPAN.

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.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

Functions to easily work with VirtualBox images.

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";
⁠};

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

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

⁠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            },
⁠        },
⁠    };
⁠};

Proudly powered by Statocles

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