1Rex::Commands::Box(3) User Contributed Perl DocumentationRex::Commands::Box(3)
2
3
4

NAME

6       Rex::Commands::Box - Functions / Class to manage Virtual Machines
7

DESCRIPTION

9       This is a Module to manage Virtual Machines or Cloud Instances in a
10       simple way. Currently it supports Amazon, KVM and VirtualBox.
11
12       Version <= 1.0: All these functions will not be reported.
13

SYNOPSIS

15        use Rex::Commands::Box;
16
17        set box => "VBox";
18
19        group all_my_boxes => map { get_box($_->{name})->{ip} } list_boxes;
20
21        task mytask => sub {
22
23          box {
24            my ($box) = @_;
25            $box->name("boxname");
26            $box->url("http://box.rexify.org/box/base-image.box");
27
28            $box->network(1 => {
29             type => "nat",
30            });
31
32            $box->network(1 => {
33             type => "bridged",
34             bridge => "eth0",
35            });
36
37            $box->forward_port(ssh => [2222, 22]);
38
39            $box->share_folder(myhome => "/home/myuser");
40
41            $box->auth(
42             user => "root",
43             password => "box",
44            );
45
46            $box->setup(qw/task_to_customize_box/);
47
48          };
49
50        };
51

EXPORTED FUNCTIONS

53   new(name => $box_name)
54       Constructor if used in OO mode.
55
56        my $box = Rex::Commands::Box->new(name => "box_name");
57
58   box(sub {})
59       With this function you can create a new Rex/Box. The first parameter of
60       this function is the Box object. With this object you can define your
61       box.
62
63        box {
64          my ($box) = @_;
65          $box->name("boxname");
66          $box->url("http://box.rexify.org/box/base-image.box");
67
68          $box->network(1 => {
69           type => "nat",
70          });
71
72          $box->network(1 => {
73           type => "bridged",
74           bridge => "eth0",
75          });
76
77          $box->forward_port(ssh => [2222, 22]);
78
79          $box->share_folder(myhome => "/home/myuser");
80
81          $box->auth(
82           user => "root",
83           password => "box",
84          );
85
86          $box->setup(qw/task_to_customize_box/);
87        };
88
89   list_boxes
90       This function returns an array of hashes containing all information
91       that can be gathered from the hypervisor about the Rex/Box. This
92       function doesn't start a Rex/Box.
93
94        use Data::Dumper;
95        task "get_infos", sub {
96          my @all_boxes = list_boxes;
97          print Dumper(\@all_boxes);
98        };
99
100   get_box($box_name)
101       This function tries to gather all information of a Rex/Box. This
102       function also starts a Rex/Box to gather all information of the running
103       system.
104
105        use Data::Dumper;
106        task "get_box_info", sub {
107          my $data = get_box($box_name);
108          print Dumper($data);
109        };
110
111   boxes($action, @data)
112       With this function you can control your boxes. Currently there are 3
113       actions.
114
115       init
116           This action can only  be used if you're using a YAML file to
117           describe your Rex/Boxes.
118
119            task "prepare_boxes", sub {
120              boxes "init";
121            };
122
123       start
124           This action start one or more Rex/Boxes.
125
126            task "start_boxes", sub {
127              boxes "start", "box1", "box2";
128            };
129
130       stop
131           This action stop one or more Rex/Boxes.
132
133            task "stop_boxes", sub {
134              boxes "stop", "box1", "box2";
135            };
136
137
138
139perl v5.36.0                      2022-07-20             Rex::Commands::Box(3)
Impressum