- 1 What is Fuel?
- 2 Where to get Fuel
- 3 How is Fuel developed?
- 4 Where can documentation be found?
- 5 Contributing to Fuel
What is Fuel?
Fuel is an open source deployment and management tool for OpenStack. Developed as an OpenStack community effort, it provides an intuitive, GUI-driven experience for deployment and management of OpenStack, related community projects and plug-ins.
Fuel brings consumer-grade simplicity to streamline and accelerate the otherwise time-consuming, often complex, and error-prone process of deploying, testing and maintaining various configuration flavors of OpenStack at scale. Unlike other platform-specific deployment or management utilities, Fuel is an upstream OpenStack project that focuses on automating the deployment and testing of OpenStack and a range of third-party options, so it’s not compromised by hard bundling or vendor lock-in.
Fuel online demo
If you would like to play with it in a demo environment, visit http://demo.fuel-infra.org:8000/ (login and passwords is 'admin'). This deployment emulates the provisioning process giving you a chance to see how the UI works without needing to install anything on your own hardware.
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 and Ubuntu, and it can be extended to support other distributions too
- 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 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. Some components can be reused separately from Fuel without any modifications, some will require little tweaks.
- Nailgun is the heart of Fuel project. Nailgun as other Openstack projects is written in Python programming language. It implements REST API as well as deployment data management. It manages disk volumes configuration data, networks configuration data and any other environment specific data which are necessary for successful deployment. It has required orchestration logic to build instructions for provisioning and deployment in a right order. Nailgun uses SQL database to store its data and AMQP service to interact with workers. Fuel CLI provides even more possible actions than UI.
- Astute is another important component, which represents Nailgun's workers, and it's function is to run certain actions according to the instructions provided from Nailgun. In fact, Astute 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. Astute exchanges the data with Nailgun via AMQP.
- Cobbler is used as provisioning service at the moment. There is a POC ready for move to Ironic, and production version is being implemented.
- Puppet is our only deployment service at the moment. It is possible to create MCollective agent to manage other configuration management frameworks, such as Chef, SaltStack, etc.
- Mcollective agents allow us to perform specific tasks like hard drives clearing, network connectivity probing etc.
- OSTF (OpenStack Testing Framework, or Health Check) is separated component, which can be easily removed and reused without Fuel. It implements post-deployment verification of OpenStack. It's main goal is to verify maximum of functionality taking minimum of time.
Where to get Fuel
- Fuel nightly builds are available from our CI via torrent: Nightly builds
- Techincal preview of Fuel Community ISO ver. 6.0: ISO, IMG. To download the iso use a client that supports announce-list and webseeds. A tested client is transmission.
- 5.0 Release Schedule
- 5.1 Release Schedule
- 5.1.1 Release Schedule
- 6.0 Release Schedule
- 6.1 Release Schedule
- Mirantis releases are available at https://software.mirantis.com/
- Build system: https://github.com/stackforge/fuel-main
- REST API + CLI + UI: https://github.com/stackforge/fuel-web
- Task executor: 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
- Launchpad project: https://launchpad.net/fuel
- Code review dashboards (generated by gerrit-dash-creator): Fuel Review Inbox, Fuel Documentation Review Inbox
- Development documentation: http://docs.mirantis.com/fuel-dev
- Feature Design template (NEW): http://git.openstack.org/cgit/stackforge/fuel-specs/tree/specs/template.rst
- Feature Design template (OLD): https://docs.google.com/a/mirantis.com/document/d/1KlTTM0X-v9nVxyG1ZSdOEpf_yj4EtzNL1Q9Sd4v5DX0
- Approved blueprint specifications https://fuel-jenkins.mirantis.com/job/merged-fuel-specs/Fuel_Development_Specs_build_results/
- Nightly builds https://fuel-jenkins.mirantis.com/view/ISO/job/publish_fuel_community_iso/
How is Fuel developed?
- Update of OpenStack (e.g. from 2014.1 to 2014.1.1)
- Deploy the ML2 Open vSwitch plug-in for Neutron by default
- Access control to the Fuel UI and API
- VMWare NSX as a network option for KVM hypervisors
- VMWare vCenter integration w/ multiple vCenter clusters
- Mellanox hardware support for ISER & SR-IOV based networking
- Deploy Zabbix monitoring solution (experimental)
- Backup / Restore Fuel Master Node
- Juno Support
- Certification at scale
- Pluggable architecture MVP in order to easily add specific functionality
- Multiple L3 agents in Neutron
- vCenter + NSX
- Multiple L2 networks (CLI)
- Decrease upgrade tarball size
- Image-based provisioning (experimental)
- Ceph as a plugin in Nailgun
- Upgrade of Openstack POC (w/o or w/ minimal downtime)
- Update to later versions of Ubuntu
- Closer integration with other Openstack services
- and many other.. see https://blueprints.launchpad.net/fuel. Feel free to file your own feature request.
Where can documentation be found?
- The primary Fuel documentation is available at http://docs.mirantis.com/openstack/fuel/. Documents available here are:
- Planning Guide
- User Guide
- Operations Guide
- Running Mirantis OpenStack on VirtualBox
- Reference Architectures
- Terminology Reference
- Release Notes
- Fuel License
- Fuel development documentation is available at http://docs.mirantis.com/fuel-dev/. This is the best source of information for anyone interested in doing Fuel development work, or if you'd just like to get a better look behind the scenes.
Contributing to Fuel
How does the contribution process work?
Fuel is an open source project developed as an OpenStack community effort, and adheres to the same collaboration and development methods shared by OpenStack projects. The repositories live in Stackforge and use the same Development workflow followed by all other OpenStack related projects.
More information on contributing to Fuel
If you are interested in learning more about how you can contribute to Fuel, you can find more information on the "How to contribute" page.
openstack deploy deployment automated juno icehouse havana cobbler install installation provisioning puppet mcollective tripleo ironic web cli ui opensource centos ubuntu distribution discovering python ruby diskimage-builder