Having recently worked on a private cloud implementation, I would like to point out the difference between external and internal/private clouds. They are really quite different things.
Some things are obvious. If you are building an internal cloud, you need to buy hardware and some cloud software solution. If you are looking at an external cloud, you don’t need to worry about any of that. All you are concerned about is getting the service (software as a service) you want from your cloud provider. This is what most people expect when they talk about “cloud”.
To make an internal cloud work, while you will no doubt be providing a service, the biggest challenge is integrating that service into existing infrastructure. For example, organisations have a naming standard, how do you integrate with that? Organisations have asset registers, charging models, directory services etc. It is highly likely that any internal cloud will need to interface with all those existing systems.
Getting cloud software installed and running is the easy bit. Integrating with the other systems is where the challenges are.