My comments on existing cloud tools
It should be easy for the users to create customized images, that may
for e.g. non-Debian packages or configurations.
User should use the same tools for their customized images as Debian
will use for the official ones. IMO putting configuration into packages
(as Neil suggests) is not an option, since we should not force users
to learn how to put config into packages and build deb packages.
Since official images should only contain things from main, it must be
very easy to create images that do include things outside from
main. Maybe we could already provide some examples of "non-free"
configs including useful cloud stuff, but we do not use or enable this
config when building the official images.
I've looked at some existing tools and often configuration data and
code was not separated cleanly. IMO this is a very important feature
that is needed, so users (they are not developers) can create their
own customized configuration and their own image without changing the
I also prefer a mixture of low level changes (like adding package
name, changing a user account name, timezone, locale) and high level
changes. A configuration item on a high level could be to customized
an image to become a LAMP server (adding packages and special config
files) or to create a image for a software developer machine
(including a lot of packages like compilers, debugger,...).
A config that customized an image to be different from Debian d-i to
better fit into a GCE, EC2, Azure or openstack environment should also
be a high level config option that can be enabled/disabled or
added. Some tools implemented such things as plugin/task/hook/provider
or are called similar.