Jump to: navigation, search


Revision as of 11:02, 20 March 2014 by Vkozhukalov (talk | contribs) (Weekly meeting)

What is Fuel?

Fuel is an all-in-one control plane for automated hardware discovery, network verification, operating systems provisioning and deployment of OpenStack. It provides user-friendly Web interface for installations management, simplifying OpenStack installation up to a few clicks.

This installer has been battle-tested during 2013 in a number of OpenStack deployments on platforms like as Dell (C6220 & R320), HP (DL380), Supermicro (6027TR-HTRF), Lenovo ThinkServer (RD530) and Cisco UCS-C.

The key features are:

  • hardware discovery
  • hardware configuration in UI (networks & disk partitioning)
  • ability to spin up and manage multiple OpenStack clusters
  • support for non-HA and HA OpenStack deployment configurations
  • pre-deployment checks and network validation
  • post-deployment checks and running a set of tests for validating deployed OpenStack
  • view logs in real-time through UI
  • support for CentOS, Ubuntu, and RHEL
  • support for multiple OpenStack distributions

Mirantis uses Fuel as a part of their Openstack related solutions and they are our major contributor. For more details look at http://software.mirantis.com/

Fuel architecture

Fuel is not monolithic. It consists of several independent components. Some of those components are Fuel specific components, while others are third-party services like Cobbler, Puppet, Mcollective, etc.

  • The heart of Fuel project is Nailgun. Nailgun as other Openstack projects is written in Python programming language. It implements REST API as well as deployment data mangement. It manage disk volumes configuration data, networks configuration data and any other environment specific data which are necessary for successful deployment. Nailgun uses SQL database to store its data and AMQP service to interact with orchestration component.
  • Another extremely important component is so called orchestrator. It is written in Ruby and we tried it to be as much data driven as possible. In fact, the orchestrator is nothing more than just a layer which encapsulates all the details about interaction with a variety of services such as Cobbler, Puppet, shell scripts, etc. and provides universal asynchronous interface to those services. Depending on what we need to do we can either manage service directly via its native protocol (for example XML-RPC protocol is used for Cobbler) or we can use Mcollective agents to perform specific tasks such as launching "puppet apply" on a remote node or running a script.
  • Our provisioning service at the moment is Cobbler. We are also working on the orchestrator driver for Ironic.
  • Puppet is our only deployment service.
  • We also have a set of Mcollective agents which allow us to perform specific tasks like hard drives clearing, network connectivity probing etc.
Fuel architecture.png

Fuel components

Web UI

To get an idea about what Fuel web user interface looks like you can watch this video http://www.youtube.com/watch?v=PppYpbCg4AU This is the recording of Mike Scherbakov's speech at Openstack Summit in Portland in April 2013. Since that time a lot of new features were added but this video gives good introduction.


Understanding Environment deployment with Fuel CLI


This component is written in Python. It provides REST API and manages all the data about Openstack clusters deployment and management. It is the heart of Fuel.


Astute is written in Ruby. It is a wrapper around Mcollective. The majority of its functionality is implemented as Mcollective agents. It is mostly for launching arbitrary commands on remote nodes. For example we use it for launching "puppet apply" in order to install all necessary packages and configure services. Besides, it has driver for interaction with Cobbler.

Join Fuel team


If you like the idea of free opensource software, if you like the idea of cloud computing, if you like the idea of making the world better, we certainly want you to join. We try to be as much open as possible. We are always glad to share our own experience as well as to adopt incoming ideas. Join us!

Weekly meeting

Fuel team holds weekly meetings on Tuesdays at 1900 UTC in IRC, at the #openstack-meeting channel. If you have a topic to discuss, you can add it to the agenda.

IRC at freenode.net

#fuel General channel
#fuel-dev Development channel

Source code

Build system https://github.com/stackforge/fuel-main
REST API + CLI + UI https://github.com/stackforge/fuel-web
Deployment orchestrator https://github.com/stackforge/fuel-astute
Puppet modules https://github.com/stackforge/fuel-library
User documentation https://github.com/stackforge/fuel-docs
Openstack Healthcheck https://github.com/stackforge/fuel-ostf

Development related links

Launchpad project https://launchpad.net/fuel
Review in progress https://review.openstack.org/#/q/status:open+fuel,n,z
Development documentation http://docs.mirantis.com/fuel-dev
Slides https://docs.google.com/file/d/0B5VvW7EEta1WMTdFajRzY0lGbkU


  • Client python library to make third-party applications to use Fuel
  • Pluggable architecture in order to easily add specific functionality
  • Patching / Upgrade of Fuel itself
  • Patching / Upgrade of Openstack (w/o or w/ minimal downtime)
  • Closer integration with other Openstack services


openstack deploy deployment havana grizzly cobbler install installation provisioning puppet mcollective tripleo ironic web cli ui opensource centos ubuntu redhat rhel distribution discovering python ruby diskimage-builder