Its very nice when launching a server to be able to customize it via the api at launch time. Various other cloud/hosting providers (aws, openstack, google, joyent, rackspc, etc) support the notion of passing in instance metadata when launching an instance via the api. On ubuntu this data typically gets interpreted via the cloud-init package which can perform all manner of useful customizations (ppas, ssh keys, package installs, chef/puppet/salt setup, etc). https://help.ubuntu.com/community/CloudInit. The two missing pieces are support in the api for instance metadata at launch, and installing the cloudinit package into the base image.