A "Data Source" to cloud-init provides 2 essential bits of information that turn a generic cloud-image into a cloud instance that is actually usable to its creator. Those are:
- public ssh key
- user-data
Very early on it felt like we should have a way to use these images outside of a cloud. They were essentially ready-to-use installations of Ubuntu Server that allow you to bypass installation. In 11.04 we added the OVF as a data source and a tool in cloud-init's source tree for creating a OVF ISO Transport that cloud-init would read data from. It wasn't until 12.04 that we improved the "NoCloud" data source to make this even easier.
Available in cloud-utils, and packaged in Ubuntu 12.10 is a utility named 'cloud-localds'. This makes it trivial to create a "local datasource" that the cloud-images will then use to get the ssh key and/or user-data described above.
After boot, you should see a login prompt that you can log into with 'ubuntu' and 'passw0rd' as specified by the user-data provided.
Some notes about the above:
- None of the commands other than 'apt-get install' require root.
- The 2 qemu-img commands are not strictly necessary.
- The 'convert' converts the compressed qcow2 disk image as downloaded to an uncompressed version. If you don't do this the image will still boot, but reads will go decompression.
- The 'create' creates a new qcow2 delta image backed by 'disk1.img.orig'. It is not necessary, but useful to keep the '.orig' file pristine. All writes in the kvm instance will go to the disk.img file.
- libvirt, different kvm networking or disk could have been used. The kvm command above is just the simplest for demonstration. (I'm a big fan of the '-curses' option to kvm.)
- In the kvm command above, you'll need to hit 'ctrl-alt-3' to see kernel boot messages and boot progress. That is because the cloud images by default send console output to the first serial device, that a cloud provider is likely to log.
- There is no default password in the Ubuntu images. The password was set by the user-data provided.

The cloud-utils link takes you to landscape.net. I think you mean launchpad.net...
ReplyDelete@Mattias,
ReplyDeleteThank you. Updated.
Hey Scott, thanks for the great work. Can this be used to seed ubuntu launching on ESXi ? I'm currently launching Ubuntu from template on ESXi and using the powershell cmdlet (InvokeVMScript to customize) but was wondering what are your thoughts.
ReplyDelete@Ahmed,
ReplyDeleteI'm embarrassingly ignorant on all things vmware. this definitely should work, if you can manage to get the resultant ISO file attached as a CD-ROM or as a disk.
I ran the above script and received the following error when I ran the kvm command:
ReplyDeleteCould not initialize SDL(No available video device) - exiting
@dtlewis16,
ReplyDeleteIf you ran the kvm command above on a remote system (or anywhere without X), then the error you saw is expected. By default, kvm will try to open up a X11 window.
Try using '-display vnc=:5900' or '-display curses'.
I'm a big fan of the curses display, but it does take some getting used to. Hit alt-1 to see the tty/vga console, alt-2 to see the qemu monitor, and alt-3 to see the serial console. To exit type 'quit' at the qemu monitor.
I was able to get the cloud image to boot up but the userid "ubuntu" and password "passw0rd" will not log me into the system.
ReplyDeleteCould we please get these, and any other up-to-date instructions and supplemental information, put in the Ubuntu Wiki 'cloud' image instructions for local use?
ReplyDeleteI've wasted a morning trying to figure out how to log-in to an image locally based on the Wiki instructions ( https://help.ubuntu.com/community/UEC/Images ) which, under the title "Natty onwards" describe using "./make-iso ovf-env.xml.tmpl user-data" and so on.
@tj,
ReplyDeleteThanks for pointing out that this content should be on https://help.ubuntu.com/community/UEC/Images . I've updated that page to include it. In the future, please do take the "Its a wiki" philosophy and fix things like that yourself.
Also, the ovf preseed path "should [still] work". If it didn't work for you feel free to open a bug against cloud-init.
Thanks for reading and commenting.
does not accept user ubuntu pasword passw0rd
ReplyDelete