The only way I found (in Mitaka) to get cloud-init to apply the network configuration for external networks or networks with disabled DHCP was via config-drive. Depending on the cloud-init version and the images you are using there could be difficulties, though. If you work with CLI you can pass the option --config-drive true to nova boot command. If you work with Horizon there is a checkbox in the Launch Instance dialog. With this option set a virtual drive is mounted temporarily to the instance from where cloud-init reads the network information and writes the respective files, you don't even have to do anything, depending on your cloud.cfg, of course.