Jump to: navigation, search

Difference between revisions of "Compass"

(Resources)
 
(25 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
= What is Compass? =
 
= What is Compass? =
  
Compass is an open source project d esignedto provide "deployment as a service" to a set of bare metal machines.
+
Compass is an open source project that provides automated deployment and management of OpenStack. It can be considered as what the LiveCD to a single box for a pool of servers – bootstrapping the server pool. Compass project follows the OpenStack community's four opens: Open Source, Open Community, Open Development, and Open Design.
  
It can provide a Restful API service for operators to pragmatically deploy an OpenStack system on to the raw physical resources. From the 10,000 foot view, it can be considered as a Live CD to a set of physical machines to the end users (staff deploying OpenStack system).
 
  
= Why Compass? =
+
{{#ev:youtube|UArzko_cd5c|480|center|Compass Demo Video}}
  
* Deployment System Extensibility: Compass is not limited to OpenStack cluster, it provides a data-driven framework for deployment. 
+
= Compass Overview =
** Example: Providing capability to create a Ceph cluster by extending the data fields in Compass system
 
  
* Hardware Support Extensibility: Like Cinder's support for multiple storage vendors' system controlled by an OpenStack API through plug-in framework, Compass supports topology-aware resource discovery to multiple networking vendor's equipment through its plug-in framework.
+
Compass itself is a distributed system that provides data modeling, configuration API, and WebUI to the end users in bootstrapping and managing a software defined data center infrastructure. Compass follows the modern software architecture design practice and it is modular and extensible.  
** Example:  Compass originally supported Huawei switches for topology-aware resource discovery, and we added support to HP switches with less than a couple of hundred lines of plug-in code.
 
  
* Host OS/Hypervisor Extensibility:
+
Major components in Compass include:
** Example: we first streamlined the process for CentOS. Ubuntu support is being supported at this moment. We imagine we can repeat the similar easy effort to systems like ESXi.
+
 
 +
* A RESTful API server, currently implemented in Python Flask.
 +
* A demo Web UI which consumes the RESTful APIs. It is a pure JavaScript WebApp developed with AngularJS. A 3rd-party application can have a different UI using the same APIs.
 +
* A meta-data module that allows a developer to extend the core functionality and provide custom data model for OpenStack configurations, for example, with or without HA, single controller vs multi-node etc. The RESTful API layer provides the updated API automatically, based on the metadata. No code change is required at the API layer.
 +
* An adapter interface for automatic resource discovery. Current discovery mechanism is based on stanard MIB over SNMP query to ToR switches. Other mechanisms (such as IPMI, or Intel's next-gen RSA) are possible by adding plugins. 
 +
* An adapter interface for configuration management tools. Currently we support Chef-based and Ansible-based CM tools. Other mechanisms (such as Puppet) are possible by adding plugins.
 +
* A Cobbler interface for OS provisioning. We hide the configuration details of kickstart files or seed files and provide a user-friendly OS-level provisioning.
  
* Configuration Management System Extensibility:
+
<br />
** Compass provides the concept of adapter. Current we have implemented Chef based deployment, and we believe other CM tools can be easily included in this framework. We believe this helps enterprises that have purchased supported licenses from other CM tools vendors.
 
  
* Small Code Base, DRY:  
+
[[File:CompassModules.png|center|1000px|Compass Modules]]
** The total code base is around 5,000 line of Python code.
+
<br />
  
= Compass Overview =
+
= Compass Contributions to OpenStack =
<gallery>
+
 
[File:CompassModules.jpg|framed|Compass Modules]
+
Some of the unique values that Compass will bring to the OpenStack community include the following:
</gallery>
+
 
 +
* It provides programmability to the operators who take care of infrastructure bootstrapping process. This allows easy integration with operators's OSS and other ecosystem tools.
 +
* It provides extensibility through meta-data. Metadata allows specification of a different flavor of OpenStack configuration in a user-friendly format without changing the source code of Compass.
 +
* Plugins support also allows users to extend the system. This includes the support of a different underly configuration management tools. For example, currently Compass support OpenStack cluster configuration with Chef, and Ansible. With newer version of Compass, Ansible will be used by default for OpenStack installation. But a 3rd-party developer could provide a plugin to support puppet-based or Chef-based underlying package management. The web UI and API layers from Compass do not change.
 +
** Not tied to a particular configuration management tools such as Chef, Puppet, Ansible. This allows easier integration with a user or admin's existing tools or solutions.
  
 
= Compass Use Cases =
 
= Compass Use Cases =
  
 
We believe Compass may provide values to other OpenStack projects other than our original envisioned scenario. Here are some of our thoughts (and we would like to think of it and discuss it if needed)
 
We believe Compass may provide values to other OpenStack projects other than our original envisioned scenario. Here are some of our thoughts (and we would like to think of it and discuss it if needed)
 +
*Remote install and configure all or a subset of physical servers in a datacenter
 +
*Remote Install the OpenStack seed for a TripleO installation (maybe Ironic, too?)
 +
*Remote install and configure a Hadoop cluster (synergy with Savanna?)
 +
*Quickly setup and tear down test installations iteratively to develop the preferred configuration  for a production deployment (cloud, big data, etc.  Synergy with Infra or Test?)
 +
 +
= Roadmap =
 +
 +
==Project Roadmap==
 +
 +
*Publish Project resources
 +
*Become an OpenStack Related Project
 +
* OpenStack community engagement
 +
*Cleanup the project to OpenStack Standards
 +
*Integrate and synergize with OpenStack projects
 +
 +
==Development Roadmap==
 +
 +
*Next Development Steps
 +
*Long term vision
 +
 +
= Resources =
 +
''Project hosted on stackforge'':
 +
https://github.com/stackforge/compass-core
 +
https://github.com/stackforge/compass-web

Latest revision as of 23:35, 11 August 2015

What is Compass?

Compass is an open source project that provides automated deployment and management of OpenStack. It can be considered as what the LiveCD to a single box for a pool of servers – bootstrapping the server pool. Compass project follows the OpenStack community's four opens: Open Source, Open Community, Open Development, and Open Design.


Compass Demo Video

Compass Overview

Compass itself is a distributed system that provides data modeling, configuration API, and WebUI to the end users in bootstrapping and managing a software defined data center infrastructure. Compass follows the modern software architecture design practice and it is modular and extensible.

Major components in Compass include:

  • A RESTful API server, currently implemented in Python Flask.
  • A demo Web UI which consumes the RESTful APIs. It is a pure JavaScript WebApp developed with AngularJS. A 3rd-party application can have a different UI using the same APIs.
  • A meta-data module that allows a developer to extend the core functionality and provide custom data model for OpenStack configurations, for example, with or without HA, single controller vs multi-node etc. The RESTful API layer provides the updated API automatically, based on the metadata. No code change is required at the API layer.
  • An adapter interface for automatic resource discovery. Current discovery mechanism is based on stanard MIB over SNMP query to ToR switches. Other mechanisms (such as IPMI, or Intel's next-gen RSA) are possible by adding plugins.
  • An adapter interface for configuration management tools. Currently we support Chef-based and Ansible-based CM tools. Other mechanisms (such as Puppet) are possible by adding plugins.
  • A Cobbler interface for OS provisioning. We hide the configuration details of kickstart files or seed files and provide a user-friendly OS-level provisioning.


Compass Modules


Compass Contributions to OpenStack

Some of the unique values that Compass will bring to the OpenStack community include the following:

  • It provides programmability to the operators who take care of infrastructure bootstrapping process. This allows easy integration with operators's OSS and other ecosystem tools.
  • It provides extensibility through meta-data. Metadata allows specification of a different flavor of OpenStack configuration in a user-friendly format without changing the source code of Compass.
  • Plugins support also allows users to extend the system. This includes the support of a different underly configuration management tools. For example, currently Compass support OpenStack cluster configuration with Chef, and Ansible. With newer version of Compass, Ansible will be used by default for OpenStack installation. But a 3rd-party developer could provide a plugin to support puppet-based or Chef-based underlying package management. The web UI and API layers from Compass do not change.
    • Not tied to a particular configuration management tools such as Chef, Puppet, Ansible. This allows easier integration with a user or admin's existing tools or solutions.

Compass Use Cases

We believe Compass may provide values to other OpenStack projects other than our original envisioned scenario. Here are some of our thoughts (and we would like to think of it and discuss it if needed)

  • Remote install and configure all or a subset of physical servers in a datacenter
  • Remote Install the OpenStack seed for a TripleO installation (maybe Ironic, too?)
  • Remote install and configure a Hadoop cluster (synergy with Savanna?)
  • Quickly setup and tear down test installations iteratively to develop the preferred configuration for a production deployment (cloud, big data, etc. Synergy with Infra or Test?)

Roadmap

Project Roadmap

  • Publish Project resources
  • Become an OpenStack Related Project
  • OpenStack community engagement
  • Cleanup the project to OpenStack Standards
  • Integrate and synergize with OpenStack projects

Development Roadmap

  • Next Development Steps
  • Long term vision

Resources

Project hosted on stackforge: https://github.com/stackforge/compass-core https://github.com/stackforge/compass-web