summaryrefslogtreecommitdiff
path: root/doc/rtd/topics/datasources/opennebula.rst
blob: 350a3e9337213efc108bfbd81c43f88b56655de8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
.. _datasource_opennebula:

OpenNebula
==========

The `OpenNebula`_ (ON) datasource supports the contextualization disk.

  See `contextualization overview`_, `contextualizing VMs`_ and
  `network configuration`_ in the public documentation for
  more information.

OpenNebula's virtual machines are contextualized (parametrized) by
CD-ROM image, which contains a shell script *context.sh* with
custom variables defined on virtual machine start. There are no
fixed contextualization variables, but the datasource accepts
many used and recommended across the documentation.

Datasource configuration
~~~~~~~~~~~~~~~~~~~~~~~~~

Datasource accepts following configuration options.

::

    dsmode:
      values: local, net, disabled
      default: net

Tells if this datasource will be processed in 'local' (pre-networking) or
'net' (post-networking) stage or even completely 'disabled'.

::

    parseuser:
      default: nobody

Unprivileged system user used for contextualization script
processing.

Contextualization disk
~~~~~~~~~~~~~~~~~~~~~~

The following criteria are required:

1. Must be formatted with `iso9660`_ filesystem
   or have a *filesystem* label of **CONTEXT** or **CDROM**
2. Must contain file *context.sh* with contextualization variables.
   File is generated by OpenNebula, it has a KEY='VALUE' format and
   can be easily read by bash

Contextualization variables
~~~~~~~~~~~~~~~~~~~~~~~~~~~

There are no fixed contextualization variables in OpenNebula, no standard.
Following variables were found on various places and revisions of
the OpenNebula documentation. Where multiple similar variables are
specified, only first found is taken.

::

    DSMODE

Datasource mode configuration override. Values: local, net, disabled.

::

    DNS
    ETH<x>_IP
    ETH<x>_NETWORK
    ETH<x>_MASK
    ETH<x>_GATEWAY
    ETH<x>_DOMAIN
    ETH<x>_DNS

Static `network configuration`_.

::

    HOSTNAME

Instance hostname.

::

    PUBLIC_IP
    IP_PUBLIC
    ETH0_IP

If no hostname has been specified, cloud-init will try to create hostname
from instance's IP address in 'local' dsmode. In 'net' dsmode, cloud-init
tries to resolve one of its IP addresses to get hostname.

::

    SSH_KEY
    SSH_PUBLIC_KEY

One or multiple SSH keys (separated by newlines) can be specified.

::

    USER_DATA
    USERDATA

cloud-init user data.

Example configuration
~~~~~~~~~~~~~~~~~~~~~

This example cloud-init configuration (*cloud.cfg*) enables
OpenNebula datasource only in 'net' mode.

::

    disable_ec2_metadata: True
    datasource_list: ['OpenNebula']
    datasource:
      OpenNebula:
        dsmode: net
        parseuser: nobody

Example VM's context section
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: sh

    CONTEXT=[
      SSH_KEY="$USER[SSH_KEY]
    $USER[SSH_KEY1]
    $USER[SSH_KEY2]",
      PUBLIC_IP="$NIC[IP]",
      USER_DATA="#cloud-config
    # see https://help.ubuntu.com/community/CloudInit

    packages: []

    mounts:
    - [vdc,none,swap,sw,0,0]
    runcmd:
    - echo 'Instance has been configured by cloud-init.' | wall
    " ]

.. _OpenNebula: http://opennebula.org/
.. _contextualization overview: http://opennebula.org/documentation:documentation:context_overview
.. _contextualizing VMs: http://opennebula.org/documentation:documentation:cong
.. _network configuration: http://opennebula.org/documentation:documentation:cong#network_configuration
.. _iso9660: https://en.wikipedia.org/wiki/ISO_9660
.. vi: textwidth=78