summaryrefslogtreecommitdiff
path: root/doc/sources/opennebula/README.rst
blob: 5cbc436656a755abfc40c4218f81db3743959c12 (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
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'.

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

The following criteria are required:

1. Must be formatted with `iso9660`_ fs. or have fs. label of **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 (via *source*) by shell

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 VM's context section
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

::
    
    CONTEXT=[
      PUBLIC_IP="$NIC[IP]",
      SSH_KEY="$USER[SSH_KEY] 
    $USER[SSH_KEY1] 
    $USER[SSH_KEY2] ",
      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