The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Rex::Box::VBox - Rex/Boxes VirtualBox Module

DESCRIPTION

This is a Rex/Boxes module to use VirtualBox VMs.

EXAMPLES

To use this module inside your Rexfile you can use the following commands.

 use Rex::Commands::Boxes;
 set box => "VBox";
   
 task "prepare_box", sub {
    box {
       my ($box) = @_;
          
       $box->name("mybox");
       $box->url("http://box.rexify.org/box/ubuntu-server-12.10-amd64.ova");
          
       $box->network(1 => {
          type => "nat",
       });
          
       $box->network(1 => {
          type => "bridged",
          bridge => "eth0",
       });
           
       $box->forward_port(ssh => [2222, 22]);
          
       $box->share_folder(myhome => "/home/myuser");
           
       $box->auth(
          user => "root",
          password => "box",
       );
           
       $box->setup("setup_task");
    };
 };

If you want to use a YAML file you can use the following template.

 type: VBox
 vms:
    vmone:
       url: http://box.rexify.org/box/ubuntu-server-12.10-amd64.ova
       forward_port:
          ssh:
             - 2222
             - 22
       share_folder:
          myhome: /home/myhome
       setup: setup_task

And then you can use it the following way in your Rexfile.

 use Rex::Commands::Box init_file => "file.yml";
    
 task "prepare_vms", sub {
    boxes "init";
 };

METHODS

See also the Methods of Rex::Box::Base. This module inherits all methods of it.

new(name => $vmname)

Constructor if used in OO mode.

 my $box = Rex::Box::VBox->new(name => "vmname");
forward_port(%option)

Set ports to be forwarded to the VM. This only work with VirtualBox in NAT network mode.

 $box->forward_port(
    name => [$from_host_port, $to_vm_port],
    name2 => [$from_host_port_2, $to_vm_port_2],
    ...
 );
share_folder(%option)

Creates a shared folder inside the VM with the content from a folder from the Host machine. This only works with VirtualBox.

 $box->share_folder(
    name => "/path/on/host",
    name2 => "/path_2/on/host",
 );
info

Returns a hashRef of vm information.

ip

This method return the ip of a vm on which the ssh daemon is listening.