Version 2 (modified by ibaldin, 9 years ago)

--

NEuca

Overview

NEuca (pronounced "nuke'ah") is a set of patches for Eucalyptus and guest configuration scripts that enhance the functionality of a private Eucalyptus cloud without interfering with its traditional operations. NEuca allows VMs instantiated via Eucalyptus to

  • Have additional network interfaces, not controlled by Eucalyptus. These interfaces can be connected on the host node to VLANs or physical interfaces. Eucalyptus continues to control and assign the address of eth0 of the VM.
  • Perform arbitrary post-boot actions using shell scripts

The changes to Eucalyptus code base are limited to its Node Controller and do not impact on the other components or the user tools. The installation (described in a separate document) follows the traditional steps for installing Eucalyptus on a cluster with minor modifications for applying the NEuca patches. User tools can be installed on existing Eucalyptus-friendly images.

License

NEuca patches to Eucalyptus are released under GPLv3 consistent with the Eucalyptus license. NEuca guest configuration scripts are released under the MIT/GENI Public License. Updated version of the iniparser library is released under the MIT license.

The details

NEuca functionality leverages the --user-data{-file} option of the euca-run-instances command. The user can pass a .ini-formatted configuration file that describes the desired interface configuration of the VM and includes the optional script to be executed by the VM at boot time. Here is an example of the configuration file and the invocation:

[global]

slice_id=6D3DE7CC-7188-49B2-AF48-F21497450D84 ; slice identifier

[interfaces]

; Interface specification has the form of either
; eth1=vlan:[host ethX]:[vlan tag on ethX]{:guest ip address} or
; eth1=phys:[host ethX]{:guest ip address}
; interfaces must start at eth1 and can be named in any order, however numbering gaps are not allowed
; e.g. if configuration file specified eth1, eth2 and eth4 only eth1 and eth2 will be processed

eth1=vlan:eth0:20:192.168.1.3/24 ; eth1 attaches to eth0.20 on host and has IP 192.168.1.3/24
eth2=vlan:eth0:19:192.168.2.3/24 ; eth2 attaches to eth0.19 on host and has IP 192.168.2.3/24

[instanceConfig]
; The script must not have any blank lines
; use tab or spaces in the beginning of the line to indicate the continuation
; of the script

script=#!/bin/sh 
    # Test script 
    yum install make