Flexible LAVA deployment for 2011.12 cycle
We need to improve application deployment. For that we want to minimize the time required to push now code to testing (staging) and production (either edge or normal) sites.
- Paul Larson
- Zygmunt Krynicki
- Zygmunt Krynicki
- Series goal:
- Accepted for trunk
- Milestone target:
- Started by
- Fathi Boudra on 2011-11-28
- Completed by
- Fathi Boudra on 2011-12-16
[zkrynicki, 2011-11-23]: Droping some tasks that are not sensible in practice (database snapshot takes too long), rollbacks == installing another requirements file with explicit versions. Migrations bite, sorry.
In general deployment is based on keeping _all_ the code inside virtualenv and using lava-dev-tool coupled with lp:lava-project to get all the right code. Actual hosting is done by apache with uwsgi and uwsgi server running our application. Restarting any of the production/
Note: this does not include edge deployment anymore, for simplicity it is being left out. This also affects deployment straight from bzr. It needs more consideration and work items to include in this already bigger bp.
[fboudra, 2011-11-28] Initial work started during 2011.11 cycle: https:/
[zkrynicki, 2011-12-06] Lucid is broken due to old upstart version. There is no easy fix. We may need to chase upstart developers for workarounds. Right now Lucid is _NOT_ supported.
[fboudra, 2011-12-06] Please, open a bug report against upstart and link to the blueprint.
[zkrynicki, 2012-12-15] I did some testing on Fedora 16 a few days ago, it actually works after doing a few small changes. I publish my changes (script changes, initial systemd support) when I'm back in spain. That VM was on my external disk.
[fboudra, 2011-12-16] Convert last work item to LP: #905465
Headline: LAVA deployment tool assists with the deployment of LAVA components. It is suitable for production deployments as well as development/
Acceptance: Production LAVA instance is deployed. Test instances on Oneiric. Scheduler and dispatcher confirmed to work.
Convert lava-scheduler daemon to django management commands to get common config management: DONE
[mwhudson] Convert lava-scheduler monitor to django management commands to get common config management: DONE
Make scheduler upstart job instance aware: DONE
Make scheduler upstart job start with the rest of lava: DONE
Add support for installing OS-specific packages (lucid vs oneiric): DONE
Work around missing features in lucid's version of upstart: DONE
Add support for backup and restore: DONE
Make the scheduler use lava-dispatch from the instance, not the global one: DONE
[mwhudson] Make the dispatcher use explicit configuration: DONE
Do a sample run on some boards (borrowed from production): DONE
Stop production, snapshot DB and restore on new-style production: DONE
Install staging instance with lava-deployment
Import some data to check that lava-deployment
Add option to roll back to previous point lava releases: DONE
Remove lava deb packages usage from Validation server: DONE
Install lava-dispatcher in the instance: DONE
[pwlars] Remove lava-dispatcher packages: DONE