OpenStack is a free and open source software platform for cloud computing. It is primarily deployed as an infrastructure as a service (IaaS) solution. The software platform consists of interrelated components that control hardware pools of processing, storage and networking resources throughout a data center. Users either manage it through a web-based dashboard, command-line tools, or a RESTful API.
OpenStack has a modular architecture with various code names for its components. It can be used for computing, for object storage or both. Its main services are summarized below:
- Compute (Nova): a cloud computing fabric controller which is the main part of an IaaS system, designed to manage and automate pools of computer resources and work with wideley available virtualization technologies.
- Networking (Neutron): a system for managing networks and IP addresses that ensures the network is not a bottleneck and gives users self-service ability.
- Block Storage (Cinder): provides persistent block-level storage devices for use with OpenStack compute instances and manages the creation, attaching and detaching of the block devices to servers.
- Identity (Keystone): provides a central directory of users mapped to the OpenStack services and acts as a common authentication system across the cloud operating system.
- Image (Glance): provides discovery, registration and delivery services for disk and server images.
- Object Storage (Swift): a scalable redundant storage system where objects and files are written to multiple disk drives spread throughout servers in the data center.
- Dashboard (Horizon): provides administrators and users a graphical interface to access, provision and automate cloud-based resources and is brandable for service providers and other commercial vendors who want to make use of it.
- Orchestration (Heat): a service to orchestrate multiple composite cloud applications using templates, through both an OpenStack-native REST API and a CloudFormation-compatible Query API.
- Telemetry (Ceilometer): provides a Single Point of Contact for billing systems, providing all the counters they need to establish customer billing, across all current and future OpenStack components.
- Database (Trove): a database-as-a-service provisioning relational and non-relational database engine.
- Elastic Map Reduce (Sahara): a component to easily and rapidly provision Hadoop clusters, where users can specify several parameters such as the Hadoop version number, the cluster topology type, node flavor details and others.
- Bare-Metal (Ironic): provisions bare metal machines instead of virtual machines.
- Messaging Service (Zaqar): a multi-tenant cloud messaging service for Web developers that can be used to send messages between various components for their SaaS and mobile applications.
- Shared File System (Manila): an open API to manage shares in a vendor agnositc framework inluding the ability to create, delete and give/deny access to a share and can be used standalone or in a variety of different network environments.
- DNS Service (Designate): a DNS as a service.
- Key Management (Barbican): a REST API designed for the secure storage, provisioning and management of secrets, aimed at being used for all environments.
- Containers (Magnum): an API service that makes container orchestration engines such as Docker and Kubernets available as first class resources in OpenStack.
- Application Catalog (Murano): an application catalog to OpenStack that enables application developers and cloud administrators to publish various cloud-ready applications in a browsable categorized catalog.
- Governance (Congress): provides policy as a service across any collection of cloud services in order to offer governance and compliance for dynamic infrastructures
As the OpenStack project has matured, vendors have pioneered multiple ways for customers to deploy OpenStack:
- OpenStack-based Public Cloud: A vendor provides a public cloud computing system based on the OpenStack project.
- On-premises distribution: In this model, a customer downloads and installs an OpenStack distribution within their internal network. See Distributions.
- Hosted OpenStack Private Cloud: A vendor hosts an OpenStack-based private cloud: including the underlying hardware and the OpenStack software.
- OpenStack-as-a-Service: A vendor hosts OpenStack management software (without any hardware) as a service. Customers sign up for the service and pair it with their internal servers, storage and networks to get a fully operational private cloud.
- Appliance based OpenStack: Nebula was a vendor that sold appliances that could be plugged into a network which spawned an OpenStack deployment.