Step by step validation Spec
Change-Id: Ic2c9e95b50315371c63b374a2d6e1c2de16c6c1c
This commit is contained in:
parent
4f6cd0d8a4
commit
45f99411f5
149
specs/ocata/step-by-step-validation.rst
Normal file
149
specs/ocata/step-by-step-validation.rst
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
=======================
|
||||||
|
Step by step validation
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Include the URL of your launchpad blueprint:
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/tripleo/+spec/step-by-step-validation
|
||||||
|
|
||||||
|
Validate each step during the installation to be able to stop fast in
|
||||||
|
case of errors and provide feedback on which components are in error.
|
||||||
|
|
||||||
|
Problem Description
|
||||||
|
===================
|
||||||
|
|
||||||
|
During deployment, problems are often spotted at the end of the
|
||||||
|
configuration and can accumulate on top of each other making it
|
||||||
|
difficult to find the root cause.
|
||||||
|
|
||||||
|
Deployers and developers will benefit by having the installation
|
||||||
|
process fails fast and spotting the lowest level possible components
|
||||||
|
causing the problem.
|
||||||
|
|
||||||
|
Proposed Change
|
||||||
|
===============
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
|
||||||
|
Leverage the steps already defined in Tripleo to run a validation tool
|
||||||
|
at the end of each step.
|
||||||
|
|
||||||
|
During each step, collect assertions about what components are
|
||||||
|
configured on each host then at the end of the step, run a validation
|
||||||
|
tool consumming the assertions to report all the failed assertions.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
We could use Puppet to add assertions in the code to validate what has
|
||||||
|
been configured. The drawback of this approach is the difficulty to
|
||||||
|
have a good reporting on what are the issues compared to a specialized
|
||||||
|
tool that can be run outside of the installer if needed.
|
||||||
|
|
||||||
|
The other drawback to this approach is that it can't be reused in
|
||||||
|
future if/when we support non-puppet configuration and it probably
|
||||||
|
also can't be used when we use puppet to generate an external config
|
||||||
|
file for containers.
|
||||||
|
|
||||||
|
Security Impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
* some validations may require access to sensitive data like passwords
|
||||||
|
or keys to access the components.
|
||||||
|
|
||||||
|
Other End User Impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
This feature will be activated automatically in the installer.
|
||||||
|
|
||||||
|
If needed, the deployer or developper will be able to launch the tool
|
||||||
|
by hand to validate a set of assertions.
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
We expect the validations to take less than one minute by step.
|
||||||
|
|
||||||
|
Other Deployer Impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
The objective is to have a fastest iterative process by failing fast.
|
||||||
|
|
||||||
|
Developer Impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Each configuration module will need to generate assertions to be
|
||||||
|
consummed by the validation tool.
|
||||||
|
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Note that this approach (multiple step application of ansible in
|
||||||
|
localhost mode via heat) for upgrades and it will work well for
|
||||||
|
validations too.
|
||||||
|
|
||||||
|
https://review.openstack.org/#/c/393448/
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee: <shardy@redhat.com>
|
||||||
|
|
||||||
|
Other contributors to help validate services:
|
||||||
|
<launchpad-id or None>
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* generate assertions about the configured components on the server
|
||||||
|
being configured in yaml files.
|
||||||
|
|
||||||
|
* implement the validation tool leveraging the work that has already
|
||||||
|
been done in ``tripleo-validations`` that will do the following
|
||||||
|
steps:
|
||||||
|
|
||||||
|
1. collect yaml files from the servers on the undercloud.
|
||||||
|
|
||||||
|
2. run validations in parallel on each server from the undercloud.
|
||||||
|
|
||||||
|
3. report all issues and exit with 0 if no error or 1 if there is at
|
||||||
|
least one error.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
To be added.
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
The change will be used automatically in the CI so it will always be tested.
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
We'll need to document integration with whatever validation tool is
|
||||||
|
used, e.g so that those integrating new services (or in future
|
||||||
|
out-of-tree additional services) can know how to integrate with the
|
||||||
|
validation.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
A similar approach was used in SpinalStack using serverspec. See
|
||||||
|
https://github.com/redhat-cip/config-tools/blob/master/verify-servers.sh
|
||||||
|
|
||||||
|
A collection of Ansible playbooks to detect and report potential
|
||||||
|
issues during TripleO deployments:
|
||||||
|
https://github.com/openstack/tripleo-validations
|
||||||
|
|
||||||
|
Prototype of composable upgrades with Heat+Ansible:
|
||||||
|
https://review.openstack.org/#/c/393448/
|
Loading…
Reference in New Issue
Block a user