OpenNebula Daemon Configuration 2.2

The OpenNebula daemon oned manages the cluster nodes, virtual networks, virtual machines, users and image repository. The configuration file for the daemon is called oned.conf and it is placed inside the $ONE_LOCATION/etc directory. In this reference document we describe all the format and options that can be specified in oned.conf.

Note: If OpenNebula was installed in system wide mode this directory becomes /etc/one/. The rest of this guide refers to the $ONE_LOCATION paths (corresponding to self contained mode) and omits the equivalent system wide locations. More information on installation modes can be found here.

Daemon Configuration Attributes

DEBUG_LEVELMeaning
0 ERROR
1 WARNING
2 INFO
3 DEBUG

Example of this section:

#*******************************************************************************
# Daemon configuration attributes
#*******************************************************************************

HOST_MONITORING_INTERVAL = 20

VM_POLLING_INTERVAL      = 10

VM_DIR=/local/images

SCRIPTS_REMOTE_DIR=/tmp/one

PORT=2633

# Use this line for sqlite
# DB = [ backend = "sqlite" ]

DB = [ backend = "mysql",
       server  = "localhost",
       user    = "oneadmin",
       passwd  = "one_1234",
       db_name = "opennebula" ]

VNC_BASE_PORT = 5000

DEBUG_LEVEL=3

Virtual Networks

Sample configuration:

#*******************************************************************************
# Physical Networks configuration
#*******************************************************************************

NETWORK_SIZE = 254
MAC_PREFIX   = "02:00"

Image Repository

The Image Repository system allows users to set up images, which can be operative systems or data, to be used in Virtual Machines easily. These images can be used by several Virtual Machiness simultaneously, and also shared with other users.

The Image Repository is a set of images and metadata associated, that life on a particular folder in the front-end (the IMAGE_REPOSITORY_PATH, which by default is $ONE_LOCATION/var/images).

Here you can configure the default values for the image repository templates. You have more information about the templates syntax here.

PrefixDevice type
hd IDE
sd SCSI
xvd XEN Virtual Disk
vd KVM virtual disk

The IMAGE_REPOSITORY_PATH can be changed to another administrator defined folder. This folder will need to be created with special permissions to ensure its consistency. It will need full permissions for writting new files for any user, and:

This can be achieved with “chmod 3770 /path/to/image/repository/”.

:!: In order to use images with the CLONE attribute set to NO in NFS with VM_DIR configurations, please be aware that, in the image catalog, the IMAGE_REPOSITORY_PATH needs to be mounted in the same path in remotes physical nodes, and if the old, traditional SOURCE attribute of the DISK section of the TM is to be used, the same path set in the SOURCE attribute needs to exist in the remotes physical nodes.

More information on the image repository can be found in the Managing Virtual Machine Images guide.

Sample configuration:

#*******************************************************************************
# Image Repository Configuration
#*******************************************************************************

IMAGE_REPOSITORY_PATH = /local/repository
DEFAULT_IMAGE_TYPE    = "OS"
DEFAULT_DEVICE_PREFIX = "hd"

Information Drivers

The information drivers are used to gather information from the cluster nodes, and they depend on the virtualizer you are using. You can define more than one information manager but make sure it has different names. To define it, the following needs to be set:

For more information on configuring the information and monitoring system and hints to extend it please check the information driver configuration guide.

Sample configuration:

#-------------------------------------------------------------------------------
# Information Driver Configuration                                              
#-------------------------------------------------------------------------------

IM_MAD = [
    name       = "im_kvm",
    executable = "bin/one_im_ssh",
    arguments  = "im_kvm/im_kvm.conf",
    default    = "im_kvm/im_kvm.conf" ]

Transfer Drivers

The transfer drivers are used to transfer, clone, remove and create VM images. You will be using one transfer driver or another depending on the storage layout of your cluster. You can define more than one transfer manager (e.g. you have different configurations for several cluster nodes) but make sure it has different names. To define it, there needs to be set:

for the driver executable

For more information on configuring different storage alternatives please check the storage configuration guide.

Sample configuration:

#-------------------------------------------------------------------------------
# Transfer Driver Configuration                                              
#-------------------------------------------------------------------------------

TM_MAD = [
    name       = "tm_ssh",
    executable = "one_tm",
    arguments  = "tm_ssh/tm_ssh.conf",
    default    = "tm_ssh/tm_ssh.conf" ]

Virtualization Drivers

The virtualization drivers are used create, control and monitor VMs on the cluster nodes. You can define more than one virtualization driver (e.g. you have different virtualizers in several cluster nodes) but make sure it has different names. To define it, the following needs to be set:

For more information on configuring and setting up the virtualizer please check the guide that suits you:

Sample configuration:

#-------------------------------------------------------------------------------
# Virtualization Driver Configuration                                           
#-------------------------------------------------------------------------------

VM_MAD = [
    name       = "vmm_kvm",
    executable = "one_vmm_kvm",
    default    = "vmm_kvm/vmm_kvm.conf",
    type       = "kvm" ]           

Hook System

Hooks in OpenNebula are programs (usually scripts) which execution is triggered by a change in state in Virtual Machines. The hooks can be executed either locally or remotely in the node where the VM is running. To configure the Hook System the following needs to be set in the OpenNebula configuration file:

Sample configuration:

HM_MAD = [
    executable = "one_hm" ]

Then each hook has to be configured, and for each one the following needs to be set:

Sample configuration:

VM_HOOK = [
    name      = "dhcp",
    on        = "create",
    command   = "/bin/echo",
    arguments = "$NAME > /tmp/test.$VMID" ]

Example Configuration File

HOST_MONITORING_INTERVAL = 10
VM_POLLING_INTERVAL      = 10
VM_DIR=/local/one_images
PORT=2633
DB = [ backend = "sqlite" ]
VNC_BASE_PORT = 5000
DEBUG_LEVEL=3
NETWORK_SIZE = 254
MAC_PREFIX   = "00:50"

IM_MAD = [
    name       = "im_kvm",
    executable = "one_im_ssh",
    arguments  = "im_kvm/im_kvm.conf" ]
VM_MAD = [
    name       = "vmm_kvm",
    executable = "one_vmm_kvm",
    default    = "vmm_kvm/vmm_kvm.conf",
    type       = "kvm" ]
TM_MAD = [
    name       = "tm_nfs",
    executable = "one_tm",
    arguments  = "tm_nfs/tm_nfs.conf" ]

HM_MAD = [
    executable = "one_hm" ]
VM_HOOK = [
    name      = "mail",
    on        = "running",
    command   = "/usr/local/one/bin/send_mail",
    arguments = "$VMID $NAME",
    remote    = "no" ]