What is OpenStack? And how can it be used?
Solution 1:
Openstack is basically a bunch of tools to setup a large-scale virtualization environment... where you can quickly create & manage virtual machines through a GUI, and keep track of what is going on. It's another framework similar to Amazon's EC2 and S3 services. There are others similar to this, like Eucalyptus and CloudStack.
Some of the many ways to apply such a thing can include:
- Scaleable websites that can dynamically scale up & down on the fly. (as needed more instances can be provisioned and used... then shutdown when not needed anymore)
- Software testing environments where you need to re-create a live environment with multiple servers, then dispose of it when done.
- Super-Computing... where you can put a bunch of servers on the same task to tackle a VERY complex problem in parallel.
the possibilities are endless... but honestly setting up your own cloud can be more work than doing without. After you take into consideration the amount of time it takes to build the framework, then build the images... etc. It's definitely not geared towards a small deployment of 2-3 servers.
Solution 2:
At a high level, OpenStack is a collection of software which enables you to create and manage a cloud computing service similar to Amazon AWS or Rackspace Cloud.
So the customer of an OpenStack installation would interact with OpenStack to create new server Virtual Machines, book more storage space, restart or re-image servers, read and write files to storage, etc.
Regarding @Johan "I can [..] do that with a normal webserver and a database, and with some python/php". No, you cannot -- we're talking about fleets of servers, possibly thousands of servers, and some customers who only need a fraction of a single servers capacity, while other customers need hundreds of servers.
From the OpenStack Object Storage Administration Guide:
Currently OpenStack develops two related projects: OpenStack Compute, which offers computing power through virtual machine and network management, and OpenStack Object Storage which is software for redundant, scalable object storage capacity.
OpenStack doesn't do this on its own; you will obviously need lots of servers, a virtualization layer/hypervisor, storage servers, a well managed network, etc. OpenStack then manages this existing infrastructure in a more automated, programmatic way.
If you're looking for more information, then perhaps the Developer & Admin Guides are the best place to start. Their first page looks a bit unusual, but the Table of Contents is always on the far left.