143 lines
3.3 KiB
ReStructuredText
143 lines
3.3 KiB
ReStructuredText
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
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
::
|
|
|
|
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
|