BoxGrinder Build 0.9.3 released

Today marks the release of BoxGrinder Build 0.9.3, packed with important bug fixes and improvements, there are also a few interesting new features to explore.

BoxGrinder Meta 1.6

The BoxGrinder Meta appliances provide an automatically-updated and ideally prepared environment to try the latest release of BoxGrinder Build

An improved release is now available in a variety of virtualized and raw formats, including BoxGrinder Build EBS AMIs for every AWS region. Previously we only published in US East, but in response to demand you can now launch instances in both x86 and i386/i686 versions in all regions.

The primary improvement in this release, aside from wider global distribution, is the enabling of ntpd to ensure that the system clock remains accurate, avoiding problems when interacting with remote systems that have sensitivity to time-skew.

What's new in 0.9.3?

Scientific Linux support

Through the kind contribution of community member Neil Wilson (NeilW), we now have support for Scientific Linux builds. Usage is quintessentially straightforward;

name: my-sl-appliance
  name: sl
  version: 6

Then run the build: boxgrinder-build my-sl-appliance.appl

Neil's contributed plugin extends the base classes present in BoxGrinder for building RHEL-derived operating systems. For those of you with ambitions to creating additional plugins, this demonstrates how painless it is to extend existing functionality to provide new features.

Reliably create and upload EBS backed AMIs in all Amazon AWS regions

Typically a bug-fix doesn't get much prominence in a release announcement, however with the resolution of a ream of interrelated bugs (amongst which included [BGBUILD-254], [BGBUILD-231], [BGBUILD-251], [BGBUILD-193], [BGBUILD-250]), you can now reliably build and deliver EBS backed AMIs to any Amazon region. Previously it was only possible to deliver to us-east-1 without issues, and even then builds would occasionally fail at random due to concurrency issues, this release fixes those bugs and hence the build process is now far more reliable and reproducible.

boxgrinder-build my-appliance.appl -p ec2 -d ebs

You must run the build on an instance in the same region that you want the EBS AMI registered in (this is an AWS limitation). For instance, if you wanted to deliver an appliance to Tokyo (ap-northeast-1) then you would need to run your build on an instance running in ap-northeast-1.

Overwrite support for S3, AMIs and EBS AMIs

A common development idiom is to iteratively change an appliance, upload and test it, then tear it down afterwards. However, it is impossible to upload a new iteration with the same name as the previous one, as this is a conflict that AWS rejects. An obvious work-around is to increment the version and release numbers in your appliance, which will ensure that the generated appliance has a different name to the previous one. Unfortunately this has the disadvantage that it quickly consumes large volumes of storage (S3, EBS) on Amazon which must be paid for. Hence to remedy this we have provided an overwrite attribute that can be set for EBS and S3 delivery options, which will cause the existing version to be torn down, de-registered and deleted, and the new revision with identical version and release numbers to be uploaded in its place.

In this example, we attempt to upload an AMI appliance that is already registered, first without overwrite enabled, then subsequently with it:

# First upload
boxgrinder-build my-appliance.appl -p ec2 -d ami
# Second upload fails, because there is already an image with the same name, version and release.
boxgrinder-build my-appliance.appl -p ec2 -d ami
# Works!
boxgrinder-build my-appliance.appl -p ec2 -d ami --delivery-config=overwrite:true

Overwrite is supported for AMIs, EBS AMIs, and standard S3 packaged delivery. EBS overwriting is slightly more complex than the other plugins, as there are several components that work together to make the instance, the most important of which are; a snapshot, an EBS root volume and the registered image. By setting overwrite, the plugin will locate and delete the EBS volume, its associated snapshot, and then de-register the image. If you wish to preserve the snapshot, you must set preserve_snapshots:true.

If BoxGrinder appliance snapshotting is enabled, then only the very last snapshot will be overwritten.

Plugin configuration is now validated before the build process begins

Previously if bad configuration values were provided to a plugin, the build process would fail only when the plugin was reached in the build pipeline. BoxGrinder now allows plugins to validate before executing the build pipeline, thus allowing much earlier detection and failure. Any plugin developers will need to modify their software to utilise this new feature, a simple example of which is the Local delivery plugin code, see the after_init and validate methods.

Other points of interest

  • BoxGrinder welcomes Japan! Support has been added for ap-northeast-1 region for all AWS-related plugins.
  • We have dropped support for Fedora 13, as it has reached EOL status.
  • The PAE configuration option is now in the operating system configuration options, rather than the appliance definition, for instance: ... --os-config=pae:false.
  • ~/.ssh/authorized_keys no longer fills with duplicate key entries, as a result of our custom /etc/rc.local script.
  • The volume of debugging messages emanating from libguestfs has been significantly decreased in --trace and --debug.

Comprehensive Change-log

Feature Request


  • [BGBUILD-191] Build fails for EC2/EBS appliance when creating filesystem on new disk for CentOS/RHEL 5
  • [BGBUILD-193] Amazon EBS delivery plugin: 'Not found device for suffix g' error while building image
  • [BGBUILD-220] group names have spaces (to the user), this breaks the schema rules for packages
  • [BGBUILD-223] BoxGrinder hangs because qemu.wrapper does not detect x86_64 properly on CentOS 5.6
  • [BGBUILD-229] boxgrinder meta fedora 15 not updating itself at boot
  • [BGBUILD-231] Cannot register Fedora 15 EC2 AMI with S3 delivery plugin in eu-west-1 availability zone
  • [BGBUILD-232] boxgrinder doesn't validate config early enough
  • [BGBUILD-233] boxgrinder fails to report a missing config file
  • [BGBUILD-237] Tilde characters break creation of yum.conf
  • [BGBUILD-250] EBS plugin incorrectly determines that non-US regions are not EC2 instances
  • [BGBUILD-251] Add ap-northeast-1 (tokyo) region for EBS plugin
  • [BGBUILD-252] rc.local script fills ~/.ssh/authorized_keys with a duplicate key every boot
  • [BGBUILD-253] RequestTimeTooSkewed error when attempting upload to S3 from an EC2 instance
  • [BGBUILD-254] all EBS volumes are delivered to us-east-1 despite setting other regions and buckets
  • [BGBUILD-260] Wrong EC2 discovery causing libguestfs errors on non US regions


  • [BGBUILD-225] Move PAE configuration parameter to operating system configuration


  • [BGBUILD-261] Decrease amount of debug log when downloading or uploading file using guestfs

Latest posts

Tweet it!