Browbeat as a Python package
This is a specification for Browbeat's behavior as a python package. With the goal of deciding on supported workflows and functionality.
Blueprint information
- Status:
- Not started
- Approver:
- Joe Talerico
- Priority:
- Undefined
- Drafter:
- Justin Kilpatrick
- Direction:
- Needs approval
- Assignee:
- Justin Kilpatrick
- Definition:
- Drafting
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
Browbeat has a couple of major components.
1. Browbeat's python components for running and indexing a number of benchmarks
2. Browbeat's Ansible components for automating the setup of various utilities and monitoring tools.
3. Browbeat's essential Ansible components required for installing or using Browbeat in any serious way.
For a workable Browbeat pip package, I propose we define Browbeat's essential Ansible components as the install, collectd, gather, and other metric setup playbooks. The rest of the playbooks should be moved to a setup tools repo.
After that we need to resolve the problem of bootstrapping Browbeat once installed by pip. On first run or command `browbeat install` browbeat needs to detect the cloud type and run the correct setup playbook. At first I foresee this being TripleO only but we need to have infrastructure to add other bootstrapping routines.
Some of the problems for setup are, where to place the virtual environments, where to place the results folder, where to place the ansible hosts and ssh config files and where to look for a browbeat config file. Finally we need to decide how each of those functions interacts with Python virtual environments and if we want to require, support, or avoid virtualenvironm
My current proposal is for browbeat to look for a file browbeat-config.yml in the current working directory or a specified path. That config then specifies where all the various files and virtual environments will need to be generated. If those files are not already there it will run the install process before running the benchmark.
For the install process configuration is a serious issue if we're going to continue to rely on Ansible, we will need to refactor the essential Ansible playbooks to accommodate being configured entirely from the browbeat-config.yml and being called only from python. That is unless we want to have a workflow where the user starts the install process, gets told to go configure a group vars file somewhere and then tell browbeat to resume the install process.