This is an alternative suggestion but not intended to completely poo-poo your idea.
Since ubuntu has headless server distributions (ie, they are CLI only), there is not a huge need to create custom systems stripped down from a GUI desktop distribution. With regard to settings and such, it is easier to maintain a parallel filesystem tree containing the relevant files that can be archived and unpacked. What this means is, you create a directory somewhere that mirrors the structure of your root directory. Eg, if you have upstart service files from
/etc/init you want to keep, copy them (or use hard links) into
When you want to deploy a new system somewhere, make a tarball of the archive, install ubuntu server, and then unpack the archive in the root directory. If the archive has been created such that it is not the
/archive directory zipped up (which would then unpack into
/archive and require you to do a lot of manual copying) but instead just the subdirectories thereof, all that stuff will install into the appropriate place (eg, the stuff from
/etc/init will be in
/etc/init). To clarify, in case you are unaware: tarchives are not syncs, meaning if you unpack a tree somewhere where all the directories already exist, those directories are not erased or replaced, but only the duplicate files within them (so your custom
/etc/init files will go into /etc/init alongside the stuff from the fresh install).
You can duplicate systems very quickly this way with the advantage of using normal installers, and not having to maintain a complete image (and/or one that requires a massive
apt-cache update post-install, etc).