I want to call out a stellar article that told me exactly what I needed to do in order to use virt-install and cloud-init to launch a cloud-image. The only thing I have to add is the caveat that the #cloud-config comment at the top of the user-data file is required. The system will ignore the file if it does not start with that comment. This is the easiest way I know to launch a brand new VM.
Did you also evaluate the cloud-init capabilities that were recently added to virt-install? For trivial things like ssh-keys, and even passing entire complex files I find the new arguments very convent!
I have not; it flew below my Radar. Link?
This link got me started, and the man pages got me even further.