The 'OpenNebula' DataSource supports the OpenNebula contextualization disk. The following criteria are required to be identified by DataSourceOpenNebula as contextualization disk: * must be formatted with iso9660 filesystem or labeled as CDROM * must be un-partitioned block device (/dev/vdb, not /dev/vdb1) * must contain * context.sh == Content of config-drive == * context.sh This is the only mandatory file on context disk, the rest content depends on contextualization parameter FILES and thus is optional. It's a shell script defining all context parameters. This script is processed by bash (/bin/bash) to simulate behaviour of common OpenNebula context scripts. Processed variables are handed over back to cloud-init for further processing. == Configuration == Cloud-init's behaviour can be modified by context variables found in the context.sh file in the folowing ways (variable names are case-insensitive): * dsmode: values: local, net, disabled default: None Tells if this datasource will be processed in local (pre-networking) or net (post-networking) stage or even completely disabled. * ssh_key: default: None If present, these key(s) will be used as the public key(s) for the instance. More keys can be specified in this single context variable, but each key must be on it's own line. I.e. keys must be separated by newlines. * hostname: default: None Custom hostname for the instance. * public_ip: default: None If hostname not specified, public_ip is used to DNS resolve hostname. * 'user_data' or 'userdata': default: None This provides cloud-init user-data. See other documentation for what all can be present here. == Example OpenNebula's Virtual Machine template == 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 " ]