There are many options for deploying OpenStack, such as Crowbar, StackOps and Nebula. However, none of these advanced options were very mature when we needed to put OpenStack into production, so we had to roll up our sleeves and start scripting. Plus, a great way to learn about a system is by deploying it directly from its package repositories.
The fine folks at CANARIE, whom we built the DAIR cloud for, were amenable to making the scripts Open Source, so you can find all of the scripts we used to deploy OpenStack Cactus here. Important note! These scripts were written with the requirements for the multi-region DAIR project in mind. While they were mostly generalized, many of our design decisions may not be suitable for your cloud (e.g. using VLANManager networking mode). Use at your own risk!
Also note that we simply used dsh to do concurrent installations across all of our compute/volume and storage nodes.
A brief explanation of the directories in Github:
/admin – Admin scripts that we wrote to simplify the creation of projects and ease administrative functions.
/cloudpipe – Scripts to set up the cloudpipe (VPN) server. Optional.
/common – Scripts we run on machines before installing any OpenStack components on them. Optional.
/dashboard – Scripts for installing the OpenStack Dashboard. Optional.
/glance – Scripts for installing Glance.
/ldap – Scripts for installing LDAP. Optional.
/misc – Stuff. Mostly used for image creation.
/nova – Scripts for installing Nova. The important ones are nova-CC-install.sh and nova-NODE-install.sh.
/stress-test – An attempt to stress test Nova and Swift.
/swift – Scripts for installing Swift. The important ones are swift-proxy-installer.sh and swift-node-installer.sh.
My primary bit of advice is to take these scripts with a grain of salt. Definitely give them a good read through before even thinking about running them. If nothing else, they're an example of how you can install OpenStack Cactus.