neuca-guest-tools 1.7: VM configuration at instantiation and “Picking yourself up by the bootstraps”

Do I dare
Disturb the universe?
In a minute there is time
For decisions and revisions which a minute will reverse.

— T. S. Eliot, “The Love Song of J. Alfred Prufrock”

ExoGENI experimenters!

Have you ever wanted to reboot your VMs, but found yourself unable to log back into them after having done so?

If so – then, fear the reboot no more; we here at ExoGENI Central have heard your laments, and have worked hard to address them!

We proudly announce the availability of neuca-guest-tools 1.7.
For those who are unaware – the neuca-guest-tools are included in most ExoGENI VM images, and handle the business of performing certain types of configuration (e.g. network address assignment) when VMs are created. In this respect, they are similar to cloud-init – but perform several additional tasks.

In this latest release, we have performed a significant clean-up and re-organization of the code. Several known and latent bugs were fixed (though, others may well have been introduced), and all python code has been PEP8-ified (for ease of reading and modification).

As to new features and changes in behavior?

  • We ensure that network interfaces retain their device names across reboots. This is accomplished by generating udev files for network interface devices on Linux. By doing this, we are able to prevent the management interface from being subverted by the kernel’s probe order during a reboot (which was the primary reason for VMs with multiple interfaces becoming unreachable after a reboot).
  • In Linux VMs that use NetworkManager (I’m looking at you, CentOS 7), NetworkManager is not allowed to interfere with the configuration of interfaces that are meant to be under the management of the neuca-guest-tools. This is done by having neuca-guest-tools mark dataplane interfaces as “unmanaged” within the context of NetworkManager.
  • Dataplane interface address configurations are only modified when the neuca-guest-tools are restarted, or when a change has been made to the request. Therefore, if you make manual changes to a dataplane interface while the VM is running (for example, via ifconfig), that change should persist until you either: reboot the VM, restart neuca-guest-tools, or make a change to your request that alters that interface. Dataplane interfaces can still be excluded from any address configuration changes by adding their MAC addresses (comma-separated, if there are multiple interfaces you wish to ignore) to the “dataplane-macs-to-ignore” configuration item in: /etc/neuca/config
  • Both System V init scripts and systemd unit files should now be named: neuca-guest-tools

As we have traditionally done, the neuca-guest-tools primarily target various flavors of Linux. Any Unix-like OS should be supportable, and contributions to enable those OSes are welcome. Support for Windows is on the long-term horizon.

The source repository can be found here:

Following Ubuntu’s lead, however, we’re no longer packaging (or supporting) 12.04; while the python code should still work with the distributed version of python in 12.04 (2.6!) – maintaining packages for distributions without vendor support seemed somewhat counter-productive.

Packages for recent and supported versions of CentOS, Fedora, and Ubuntu can be found here:

A source release can also be found at that location, for those who wish to attempt installing on versions of Linux for which we do not have packages.

We have also provided new VM images that contain the latest release of neuca-guest-tools; these are:

  • Centos 6.9 v1.0.2
  • Centos 7.4 v1.0.2
  • Fedora 25 v1.0.6
  • Fedora 26 v1.0.1
  • Ubuntu 14.04 v1.0.3
  • Ubuntu 16.04 v1.0.3

As a reminder – if you’d like to check what version of the neuca-guest-tools you’re running in your VM, you can run:


A sample run might look like the following:

[root@Node0 ~]# neuca-version
NEuca version 1.7

Remember: unless you’re running neuca-guest-tools 1.7, any VMs having multiple interfaces are unlikely to survive a reboot.

Finally – if you’d like to create your own images from one of the ones that already has already been provided for you, we suggest taking a look at the “image capture” script, which can be found here:

We’ve recently made some changes to it as well, so that custom images are captured more reliably. We’ve also added the ability to capture xattrs (if they are set on filesystems within your image); this should enable the ability to boot SELinux-enabled images. If interest is expressed in performing experiments using SELinux-enabled images, we will provide base VM images that have SELinux-enabled (from which customized images can be derived).

If you would like an example of how to use the image capture script, please take a look at the following fine ExoBlog entry:
Creating a Custom Image from an Existing Virtual Machine

We hope you enjoy the new release of neuca-guest-tools!

Have something to add?

Loading Facebook Comments ...