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
|