Just a pointer here to a bunch of really good OpenStack Puppet modules:
https://github.com/stackforge/puppet-openstack
https://github.com/hastexo/kickstack
There's some gaps, such as HA for controller components, monitoring, etc
- but the structure and ease of use is excellent.
Particularly, for your use case, take a look at Florian's Kickstack
module - I did see a 10 min video where he goes through the use of it,
but I can't find the link to hand now... What I like about the
Kickstack module is the way roles and profiles have been arranged to
make application of intended config fast and easy.