# OpenNebula Virtual Infrastructure Manager driver

OpenNebula is a Virtual Infrastructure Manager that controls Virtual Machines (VM) in a pool of distributed resources by orchestrating network, storage and virtualization technologies. The OpenNebula driver lets you manage your private or hybrid (Amazon EC2 or Elastic Hosts based) cloud using a standard libvirt interface, including the API as well as the related tools and VM description files.

## Deployment pre-requisites

- A working OpenNebula installation, version 1.2 or higher.

## Connections to OpenNebula driver

The Uri of the driver protocol is "one". Some example connection Uris for the driver are:

        one:///                      (local access)
        one+unix:///                 (local access)
        one://example.com/           (remote access)
        one+tcp://example.com/       (remote access, SASl/Kerberos)
        one+ssh://user@example.com/  (remote access, SSH tunnelled)

## Example domain XML config

There are some limitations on the XML attributes that may be specified when interfacing OpenNebula. The following xml example details the attributes and options supported by the OpenNebula driver:

### Paravirtualized guest direct kernel boot

        <domain type='one'>
        <name>vm01</name>
        <memory>32768</memory>
        <vcpu>1</vcpu>

        <os>
            <type>linux</type>
            <kernel>/boot/vmlinuz-2.6.24-17-xen</kernel>
            <initrd>/boot/initrd.img-2.6.24-17-xen</initrd>
            <cmdline></cmdline>
            <root>sda1</root>
        </os>

        <devices>

            <disk type='file' device='disk'>
                <source file='/images/sgehosts/01/disk.img'/>
                <target dev='sda1'/>
            </disk>

            <disk type='file' device='disk'>
                <source file='/images/sgehosts/01/swap.img'/>
                <target dev='sda2'/>
            </disk>

            <disk type='file' device='cdrom'>
                <source file='/images/iso/cdrom.iso'/>
                <target dev='hdc'/>
                <readonly/>
            </disk>

            <!--BRIDGE-->
            <interface type='bridge'>
                <source bridge='eth0'/>
                <mac address='00:16:3e:5d:c7:9e'/>
            </interface>

            <!--ONE Network-->
            <interface type='network'>
              <source network='onenetwork'/>
            </interface>
        </devices>
        </domain>

Note: The "<interface type='network'>" will attach the interface to a previously configured network (named `onenetwork`) within the OpenNebula system, typically with the `onevnet` CLI command.

Note: OpenNebula supports the simultaneous use of different hypervisors, so you can specify any os type (linux or hvm) supported by your cluster.

## Links

- OpenNebula Documentation
- OpenNebula User Guide