In order to improve the ability to independently consume the roles produced by openstack-ansible in different reference use-case deployments and allow independent development of each role by different projects, this specification proposes that:
This provides the following benefits:
A detailed description of the problem:
The following documentation should be developed:
The following process should be followed for registering new roles:
The following process should be followed for breaking out existing roles:
Leave everything as it is and continue to merge any new roles proposed into the same monolithic repository.
The impact to playbooks should be fairly incremental, but will need to be determined on a role by role basis. This must be described in the spec on a per role basis.
It is clear that the libraries, filters and plugins will need to be broken out into its own repository and each role that consumes them will need to use a submodule reference in the role. This ensures that all the roles use a common set of libraries, filters and plugins.
There are two aspects of upgrade impact to be considered:
Each role should be developed with upgradability in mind and conform to the upgrade framework which is being developed for the Kilo -> Liberty upgrade process.
End users will not know of any differences.
The structure and placement of roles on the deployment host will be different. The changes will need to be documented for support purposes. However, the configuration and execution of the existing playbooks for downstream consumers should be targeted to be exactly the same to minimise disruption.
Any role-specific impacts will need to be defined on a per-role basis.
The biggest negative developer impact will be the difficulty working between the two different structures - master being split, with liberty and kilo being consolidated. It may be worth considering ways to make them all work the same way once the conversions are done for master.
The positive impact has been outlined in the introduction.
This should only be implemented after liberty has been released.
See proposed change section.
The testing impact will need to be described on a per-role basis.
As a standard, the following tests are expected to be implemented as a standard for each role:
Integration tests are expected to be implemented in the openstack-ansible repository and executed whenever the role versions are incremented. This ensures that a role tag increment is only accepted for an integrated release once it passes a full set of integration tests.
While the placement of the role files on the deployment host will be different, the configuration and execution of the deployment should remain the same, resulting in minimal documentation impact.
See the proposed change section for developer reference documentation to be developed.