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 |
|---|
| # 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 :
Similarly the image :
| image |
|---|
| 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 :
| 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 :
| 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 :
| 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 :
| 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 :
| output |
|---|
| 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 :
| 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.
| 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
|