Ensure cloud-init has finished before puppet run
Ensure cloud-init has finished before puppet run

Sometimes cloud-init does not finish before we start applying
configs with ansible/puppet and can lead to issues. This would
ensure that cloud-init has finished before ansible/puppet
configs.

With os-collect-config we used to ensure that with:

$ sudo cat /usr/lib/systemd/system/os-collect-config.service
[Unit]
Description=Collect metadata and run hook commands.
After=cloud-final.service
Before=crond.service

With baremetal provisioning after config-drive support, this
would also be useful when firstboot config is used.

Change-Id: I35c7c1610af08b33497f43090761aaa55d3a9efc

openstack/tripleo-heat-templates,openstack/tripleo-heat-templates