My organization has used cobbler and chef to configure the physical infrastructure and OpenStack, which has worked pretty well. It may not be worth the change if you've got a structure that built out that won't need to significantly change for a while and that your organization is familiar with. If your developers frequently need to modify capacity and shift workloads around, though, then I'd highly recommend going the OpenStack route. It will give them a standard framework to operate inside of and documentation they can reference that you won't have to write.
Also if I could go back in time I'd use Ansible instead of Chef, just to make the whole stack more Python-y.