Skip to content

Opennebula Sandbox

Aim : Install vm's on opennebula with scripts:

  • install opennebula sandbox
  • install a vm with CLI commands
  • install a virtual network with CLI
  • tryout contextualization
  • can it be done by ansible
  • try it out for Slovenia on sandbox

However this chapter did not come so far, but it does give a good overview on how the opennebula sandbox is built up in detail.

want an opennebula environment like the one in 0520. If you look at the sandbox, there are some objects already created, and here are the commands that where used :

command for creation
1
2
3
4
5
6
7
8
# create a host
$ onehost create one-sandbox --im kvm --vm qemu --net dummy
# create a network
$ onevnet create ~/templates/cloud.net
# create a template
$ onetemplate create ~/templates/ttylinux-template.one
# create an image
$ oneimage create ~/templates/ttylinux-image.one

So. there are some interesting templates available in the sandbox itself. Login with root/opennebula to see them :

templates
su - oneadmin
cd ~/templates

cloud.net contains this :

cloud.net
NAME = "cloud"
TYPE = fixed
BRIDGE = br0

LEASES = [ IP = 172.16.100.200 ]
LEASES = [ IP = 172.16.100.201 ]
LEASES = [ IP = 172.16.100.202 ]
LEASES = [ IP = 172.16.100.203 ]
LEASES = [ IP = 172.16.100.204 ]
LEASES = [ IP = 172.16.100.205 ]
LEASES = [ IP = 172.16.100.206 ]
LEASES = [ IP = 172.16.100.207 ]
LEASES = [ IP = 172.16.100.208 ]
LEASES = [ IP = 172.16.100.209 ]
LEASES = [ IP = 172.16.100.210 ]

And clearly enough this is what you see when running :

show
onevnet show 0

Similarly the image :

image
1
2
3
4
5
6
NAME = ttylinux
PATH = /var/lib/one/source-images/ttyvd-context.qcow2
TYPE = OS
DESCRIPTION="A small GNU/Linux system for testing"
DEV_PREFIX="vd"
DRIVER="qcow2"

And template :

template
NAME   = ttylinux

CONTEXT=[
  NETWORK="YES",
  SSH_PUBLIC_KEY="$USER[SSH_PUBLIC_KEY]" ]
CPU="0.1"
DESCRIPTION="A small GNU/Linux system for testing"
DISK=[
  IMAGE="ttylinux",
  IMAGE_UNAME="oneadmin" ]
FEATURES=[
  ACPI="no" ]
GRAPHICS=[
  LISTEN="0.0.0.0",
  TYPE="VNC" ]
MEMORY="64"
NIC=[
  NETWORK="cloud",
  NETWORK_UNAME="oneadmin" ]

So can we come up with an own set of templates ? The last output was identical to what you get when you ask the info of a template. So i guess it is interchangeable.

virtual machines

Let's view the output of the vm's list :

list vms
onevm list
output
ID USER     GROUP    NAME            STAT UCPU    UMEM HOST             TIME
48 oneadmin oneadmin Gateway         runn    0      2G host2.rini 232d 01h31
49 oneadmin oneadmin testje          runn    8      2G host1.rini 223d 00h29
54 oneadmin oneadmin ActiveDirectory runn    1      2G host3.rini 217d 06h01
55 oneadmin oneadmin SQLServer 0     runn   14     16G host2.rini 217d 06h01
56 oneadmin oneadmin SQLServer 1     runn    1      8G host1.rini 217d 06h01
58 oneadmin oneadmin BT Server       runn    2      4G host3.rini 217d 05h16
59 oneadmin oneadmin STESTA-Test-59  runn    0      2G host2.rini 195d 01h25
68 oneadmin oneadmin RS0520-19 ACCES runn    0      2G host1.rini 180d 08h36
92 oneadmin oneadmin provision-vm    runn    0      4G host3.rini 133d 03h35
100 oneadmin oneadmin MinO7           runn    0      2G host3.rini 117d 01h22
101 oneadmin oneadmin ehealth-vecozo- runn    1      4G host1.rini  98d 00h48
102 oneadmin oneadmin ehealth-gateway runn    1      4G host1.rini  97d 00h30
104 oneadmin oneadmin ehealth-offload runn    0      4G host3.rini  92d 00h50
114 oneadmin oneadmin eg-vm-lt        runn    0      1G host2.rini  62d 00h40
115 oneadmin oneadmin eg-vm-estland   runn    0      1G host2.rini  28d 09h39
116 oneadmin oneadmin tmptmp          runn    0   1024M host3.rini  28d 06h10
117 oneadmin oneadmin SQL-Server      runn    1      8G host2.rini   1d 01h28
118 oneadmin oneadmin BT-Server       runn    1      4G host1.rini   1d 01h27

So image id 114 and 115 are esense gateways, so let's pick 114 :

show IS 114
onevm show 114
output
VIRTUAL MACHINE 114 INFORMATION
ID                  : 114
NAME                : eg-vm-lt
USER                : oneadmin
GROUP               : oneadmin
STATE               : ACTIVE
LCM_STATE           : RUNNING
RESCHED             : No
HOST                : host2.rinis.eu
CLUSTER ID          : -1
START TIME          : 08/26 16:56:31
END TIME            : -
DEPLOY ID           : one-114

VIRTUAL MACHINE MONITORING
NET_RX              : 20.8G
NET_TX              : 40.7M
USED MEMORY         : 1G
USED CPU            : 0

PERMISSIONS
OWNER               : um-
GROUP               : ---
OTHER               : ---

VM DISKS
 ID TARGET IMAGE                               TYPE SAVE SAVE_AS
  0 hda    eg-hd-lt                            file  YES       -

VM NICS
 ID NETWORK              VLAN BRIDGE       IP              MAC
  0 lan17-10               no br30         172.17.10.60    02:00:ac:11:0a:3c
                                           fe80::400:acff:fe11:a3c
  1 storage                no br4          172.17.4.55     02:00:ac:11:04:37
                                           fe80::400:acff:fe11:437
  2 controle               no br16         172.16.0.207    02:00:ac:10:00:cf
                                           fe80::400:acff:fe10:cf

VIRTUAL MACHINE HISTORY
SEQ HOST            ACTION             DS           START        TIME     PROLOG
  0 host2.rinis.eu  live-migrate        0  08/26 16:56:44   7d 22h55m   0h00m01s
  1 host1.rinis.eu  migrate             0  09/03 15:52:03   0d 00h42m   0h00m00s
  2 host3.rinis.eu  migrate             0  09/03 16:34:11   0d 00h01m   0h00m00s
  3 host2.rinis.eu  migrate             0  09/03 16:35:38   0d 00h20m   0h00m00s
  4 host1.rinis.eu  migrate             0  09/03 16:55:35   0d 00h31m   0h00m00s
  5 host2.rinis.eu  live-migrate        0  09/03 17:26:23   0d 00h14m   0h00m01s
  6 host1.rinis.eu  live-migrate        0  09/03 17:40:13   0d 00h08m   0h00m00s
  7 host2.rinis.eu  none                0  09/03 17:48:16  53d 23h53m   0h00m00s

USER TEMPLATE
DESCRIPTION="smaller ehealth template"

VIRTUAL MACHINE TEMPLATE
AUTOMATIC_REQUIREMENTS="!(PUBLIC_CLOUD = YES)"
CONTEXT=[
  DISK_ID="1",
  ETH0_GATEWAY="172.17.10.200",
  ETH0_IP="172.17.10.60",
  ETH0_MAC="02:00:ac:11:0a:3c",
  ETH0_MASK="255.255.255.0",
  ETH1_GATEWAY="172.17.4.200",
  ETH1_IP="172.17.4.55",
  ETH1_MAC="02:00:ac:11:04:37",
  ETH1_MASK="255.255.255.0",
  ETH2_DNS="172.16.0.254",
  ETH2_GATEWAY="172.16.0.254",
  ETH2_IP="172.16.0.207",
  ETH2_MAC="02:00:ac:10:00:cf",
  ETH2_MASK="255.255.255.0",
  ETH2_NETWORK="172.16.0.0",
  NETWORK="YES",
  TARGET="hdb" ]
CPU="1"
GRAPHICS=[
  LISTEN="0.0.0.0",
  PORT="6014",
  TYPE="VNC" ]
MEMORY="1024"
OS=[
  ARCH="x86_64",
  BOOT="hd" ]
TEMPLATE_ID="22"
VMID="114"

That's too much for a template, but as it seems we only need the last bit. The connection for the networks is probably on mac address, but we'll see that later at the networks section.

Template

The template used was just a 'stamp' to use at the time it has no connection to the VM anymore. So it looks like this :

show 22
oneimage show 22
output
IMAGE 22 INFORMATION
ID             : 22
NAME           : 250GB
USER           : oneadmin
GROUP          : oneadmin
DATASTORE      : default
TYPE           : DATABLOCK
REGISTER TIME  : 03/24 10:23:43
PERSISTENT     : No
SOURCE         : /var/lib/one//datastores/1/0398cfd547c07b5706de324512558826
FSTYPE         : raw
SIZE           : 250G
STATE          : rdy
RUNNING_VMS    : 0

PERMISSIONS
OWNER          : um-
GROUP          : ---
OTHER          : ---

IMAGE TEMPLATE
DEV_PREFIX="hd"

Image

Weird but there is no ID reference for the image in the description, only the mentioning of eg-hd-lt in the headers. So let's take a look at that one :

image list
oneadmin@csrinis505 ~]$ oneimage list
output
ID USER       GROUP      NAME            DATASTORE     SIZE TYPE PER STAT RVMS
 1 oneadmin   oneadmin   Centos66        default       383M CD   Yes err     0
 2 oneadmin   oneadmin   30GB            default        30G DB    No used    1
 3 oneadmin   oneadmin   66Minimal       default        30G DB    No used    2
 5 oneadmin   oneadmin   500GB           default       500G DB    No rdy     0
10 oneadmin   oneadmin   WServer2012     default         4G CD    No used    6
11 oneadmin   oneadmin   SQLServer2014   default       2.4G CD    No used    3
12 oneadmin   oneadmin   BizTalk2013     default         1G CD    No used    2
19 oneadmin   oneadmin   PatchC++        default        10M DB    No rdy     0
20 oneadmin   oneadmin   Centos7         default       566M CD    No used    2
21 oneadmin   oneadmin   90GB            default        90G DB    No used    4
22 oneadmin   oneadmin   250GB           default       250G DB    No rdy     0
23 oneadmin   oneadmin   STESTA-Test     default        30G DB    No used    1
24 oneadmin   oneadmin   VyOS 1.1.5      default       236M CD    No used    1
25 oneadmin   oneadmin   10GB            default        10G DB    No used    1
28 oneadmin   oneadmin   centos7.0-gw    default     132.8G OS   Yes rdy     0
35 oneadmin   oneadmin   provisioner     default     132.8G OS   Yes used    1
37 oneadmin   oneadmin   BT Server 20150 default        90G DB    No rdy     0
38 oneadmin   oneadmin   SQL Server 0 20 default        90G DB    No rdy     0
39 oneadmin   oneadmin   ActiveDirectory default        90G DB    No rdy     0
41 oneadmin   oneadmin   centos6.6-cd    default       383M CD    No rdy     0
42 oneadmin   oneadmin   centos6.6-gw    default     128.9G OS   Yes rdy     0
43 oneadmin   oneadmin   message-process default     128.9G OS    No rdy     0
44 oneadmin   oneadmin   vecozo-gateway- default     128.9G OS   Yes used    1
45 oneadmin   oneadmin   VyOS            default        10G DB    No rdy     0
46 oneadmin   oneadmin   ehealth-gateway default     128.9G OS   Yes used    1
48 oneadmin   oneadmin   ehealth-offload default     128.9G OS   Yes used    1
50 oneadmin   oneadmin   centos-6.7-mini default       395M CD   Yes rdy     0
51 oneadmin   oneadmin   eg-hd-lt        default      19.5G OS   Yes used    1
56 oneadmin   oneadmin   eg-hd-base      default      19.5G OS   Yes used    1
57 oneadmin   oneadmin   eg-hd-estland   default      19.5G OS   Yes used    1
58 oneadmin   oneadmin   40GB            default        40G DB    No used    2

It is number 51 :

A closer look gives us :

show 51
oneimage show 51
output
IMAGE 51 INFORMATION
ID             : 51
NAME           : eg-hd-lt
USER           : oneadmin
GROUP          : oneadmin
DATASTORE      : default
TYPE           : OS
REGISTER TIME  : 08/24 15:58:51
PERSISTENT     : Yes
SOURCE         : /var/lib/one//datastores/1/4792fae83d8c1c48787b1fa97ddef579
PATH           : /var/lib/one//datastores/1/a9a68e8f720a4b46ae82643247ffc256
SIZE           : 19.5G
STATE          : used
RUNNING_VMS    : 1

PERMISSIONS
OWNER          : um-
GROUP          : ---
OTHER          : ---

IMAGE TEMPLATE
DESCRIPTION="ehealth gateway base harddisk"
DEV_PREFIX="hd"
FSTYPE="raw"

VIRTUAL MACHINES

    ID USER     GROUP    NAME            STAT UCPU    UMEM HOST             TIME
    114 oneadmin oneadmin eg-vm-lt        runn    1      1G host2.rini  62d 01h52

Now here we have a clear link between VM and IMAGE, VM 114 is using image 51.

From the UI you can just hit 'instantiate' on a template, so it should not be so hard to instantiate from the command line. and it is not.

instantiate
onetemplate instantiate 0

Or you can run onetemplate list first to determine which template id you want to use. When you try this again, it 'surprisingly' succeeds :

list
onevm list
output
1
2
3
ID USER     GROUP    NAME            STAT UCPU    UMEM HOST             TIME
0 oneadmin oneadmin ttylinux-0      runn  7.0   78.5M one-sandbo   0d 00h03
1 oneadmin oneadmin ttylinux-1      runn  7.0   77.3M one-sandbo   0d 00h02

Two VM's are now running on the same image, but on close inspection, you will see :

list
oneimage list
output
ID USER       GROUP      NAME            DATASTORE     SIZE TYPE PER STAT RVMS
0 oneadmin   oneadmin   ttylinux        default       200M OS    No used    2

The image column PER(sistent) is false (NO). If this would be a persistent image, the second instantiate would have failed.

list
onevnet list : 
output
ID USER         GROUP        NAME            CLUSTER      TYPE BRIDGE   LEASES
 1 oneadmin     oneadmin     management      -               R br1           0
 2 oneadmin     oneadmin     lan10           -               R br10          7
 3 oneadmin     oneadmin     lan20           -               R br20          2
 5 oneadmin     oneadmin     STESTA          -               F br86          1
 6 oneadmin     oneadmin     controle        -               F br16          9
 7 oneadmin     oneadmin     lan17-10        -               R br30         13
 8 oneadmin     oneadmin     eSENS Internet  -               F br86          1
10 oneadmin     oneadmin     lan 17-20       -               R br20          0
11 oneadmin     oneadmin     lan 17-30       -               R br10          0
12 oneadmin     oneadmin     storage         -               R br4           6