Allow for user-data to be injected into cloud-init templates and finish scripts
Most of the popular public clouds and some private clouds have the idea of user-data when provisioning a new machine. The can be some arbitrary stuff that gets passed to the instance via the metadata or a script to do initial setup work, like adding repos that will be needed to run puppet.
Ideally user-data will be shared either globally or assigned with a single account. For example, I might setup my instances different than someone else and might utilize user-data to do that. We could utilize the existing templates table to store the user-data fields and just hide the type of template that user-data will be. This would also let us provide "fake" user-data as snippet for platforms that don't truly support it.