One of the worst things when running rally is to configure each task manually according to the target environment, some tasks even requires specific resources ID (e.g. fixed network) that are unique for each deployment. This is a very laborious/error prone work that does not scale well for our QA team.
Develop an ansible role capable of:
- Installing and configuring Rally
- Identifying which services are present on the target cloud (e.g. keystone, glance, nova, ...)
- Before running the task ensure that all resources necessary are present
- Running rally tasks only for the services identified on 2
- The tasks execution logs and benchmark results are stored and available via web
The role should also support specific cloud deployment configurations that will enable/disable specific tasks according to the deployment, for example:
- If cloud X has a shared storage backend for nova, it should include the task
block_migration: false. Otherwise
As there are some configurations that we cannot identify through the OpenStack API, such as if the nova backend is a shared storage or not, these configuration should be specified by variables which can be overridden when running the ansible playbook.
Specific rally tasks configuration (e.g.
runner type/times/concurrency) should also be supported through variables that can be overridden.
This project is one of its kind!