(R)?ex the friendly automation framework

News

2020-12-05
Rex-1.13.2

The Rex-1.13.2 release is now available on CPAN. It contains only documentation updates, mostly for the built-in template capabilities, but also fixes a few typos.

2020-11-05
Rex-1.13.1

Happy 10th birthday, Rex!

The Rex-1.13.1 release is now available on CPAN. It is focusing on CMDB bugfixes and documentation, while also fixing a missing feature flag. Upgrade is recommended for all users.

2020-10-05
Rex-1.13.0

The Rex-1.13.0 release is now available on CPAN. It adds on_no_change hooks for file management commands to trigger further actions when files are left unchanged. Upgrade is recommended for all users.

2020-09-05
Rex-1.12.2

The Rex-1.12.2 release is now available on CPAN. It fixes various regressions, as well as bugs around file management. Upgrade is highly recommended for all users.

2020-08-05
Rex-1.12.1

The Rex-1.12.1 release is now available on CPAN. It adds documentation for feature flags, and fixes a release packaging issue.

Conferences

2016-06-21

» 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

set virtualization => "VBox";

use Data::Dumper;

print Dumper vm list => "all"; print Dumper vm list => "running";

vm destroy => "vm01";

vm delete => "vm01";

vm start => "vm01";

vm shutdown => "vm01";

vm reboot => "vm01";

vm option => "vm01", memory => 512;

print Dumper vm info => "vm01";

# creating a vm vm create => "vm01", storage => [ { file => "/mnt/data/vbox/vm01.img", } ], memory => 512, type => "Linux26", cpus => 1, boot => "cdrom";

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

set auth for qr{^example\d$} => user => "example", password => "foob4r";

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

GitHub / IRC / Twitter / Google Groups / StackShare / Mailing list / Server Fault   -.ô.-   Disclaimer