» 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
VirtualBox support for Rex::Commands::Virtualization
use Rex::Commands::Virtualization;
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";
- Rex::Commands::Box
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";
};
auth for now works with regular expresions.
# Rexfile task foo => sub { }; task example => sub { }; task example2 => sub { };
It is now possible to use the repository function for multiple distributions.
task "add-repo", "server1", "server2", sub { repository add => myrepo => { Ubuntu => { url => "http://foo.bar/repo", distro => "precise", repository => "foo", }, Debian => { url => "http://foo.bar/repo", distro => "squeeze", repository => "foo", }, CentOS => { url => "http://foo.bar/repo", }, }; };
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
},
},
};
};
Fixed API usage of Rex
Merged pull request #82: Better handling of $option parameter for 'install' - joris
Merged pull request #79: Unwrapped double looping over files and regexes and adding $new_line if not present in absence of regexes - Mario Domgoergen