This blueprint is about how we are going to sync upstream OpenStack puppet modules and their dependencies into fuel-library.
Current versions of Fuel-library OpenStack and some base modules is Juno-based and these versions are not appropriate to deploy OpenStack Kilo release and OpenStack from master. Our puppet code has increasing code divergence with upstream. To better support of current OpenStack release we should keep our puppets synced this upstream manifests. Also there are a lot of local to Fuel fixes for issues in puppet modules which should be contributed to upstream.
In order to achieve better stability in Fuel and benefit the community, we would like to merge our Puppet modules from upstream. This process involves merging core OpenStack components and their dependencies first, then updating Fuel specific components/HA architecture second according to changes in first step.
One of the ways to support deployment of current OpenStack release is to have puppet modules synced to the latest stable versions. The idea is to have current stable release of OpenStack puppet modules and then work with upstream master to minimize difference. This requires contribution of Fuel specific changes to upstream. Final goal is to use and support upstream modules for Fuel deployment.
Moving from outdated manifests to the newest stable versions has several important advantages:
Leave manifests as is. Fix issues in our manifests instead of getting fixes from Upstream.
Deployers will get full functionality of latest stable puppet module. This will allow to use features and options implemented in upstream for current OpenStack release without objectionable workarounds in modular classes.
Implementation is going to be fairly simple. We are going to use latest stable version (tag) of each module. For OpenStack modules we are focused on version 6.0.0 which supports stable/kilo OpenStack. Now this branch is not released yet, so we are using current master of upstream puppet modules, and then branch will be released, we will add additional patches.
Each module will be tested according to the following testing flow:
Then this module should be sent on review according following workflow:
- Each particular change must be covered with fuel library rake noop tests so that we do not lose any changes
Workflow for new OpenStack modules (e.g. openstacklib):
We should fork same version (6.0.0) to fuel-library and continuously update it according to changes in core OpenStack puppet modules. Our Deployment Puppet Team will be responsible for that.
Our QA team should be involved to create:
Every task for module preparation will be tracked in Trello board: https://trello.com/b/epRiNHz6/mos-puppets
Upgrade base puppet modules:
Modules which should be removed:
Add new modules:
Upgrade OpenStack modules:
Merge following modules into ‘cluster’ module:
Integrate ‘ironic’ module:
Feature is considered completed as soon as there is no deployment tests failing. This feature should be mostly considered as task for puppet modules upgrade, thus not affecting functionality of the deployed cloud at all.
Additional tests should be added only for ironic deployment as it’s required in blueprint: https://blueprints.launchpad.net/fuel/+spec/fuel-integrate-ironic
Process of development is not going to be drastically changed. Documentation should have notes that puppet modules was updated accorting to the latest appropriate version for Openstack Kilo release.
Commit changes for Ironic module sync and adapt should have DocImpact tag.