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_IP ETH_NETWORK ETH_MASK ETH_GATEWAY ETH_DOMAIN ETH_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