Make a clearer separation between Ansible and Vagrant
These changes will make the development environment easier to work with, especially for non-Vagrant users.
- Rather than setting playbook variables in the Vagrantfile, Vagrant users should modify playbooks directly.
- Add an example playbook for Ansible users
- roles should be more granular
- remove unnecessary/dead code and yml
- default to a minimal install
- Variables should have clear definitions and defaults
Updated by bmbouter over 6 years ago
I want to make a case to have Vagrant stop installing plugins or even knowing about them. Vagrant installing plugins creates several problems:
1) A contributor rarely needs more than 1 plugin yet they have to wait for N plugins to install at vagrant up time. This makes Vagrant up take significantly longer without a good reason. The core devs have many plugins checked out so core devs are the most affected.
2) The maintenance of maintaining Ansible machinery to perform plugin installation takes effort which doesn't make sense to me considering you can install any plugin you want with 1 setup.py or dnf command. Also it's more flexible to install it manually because there are multiple ways to install a plugin.
3) Plugins that don't have 'Vagrant support' need additional work from a plugin author which we could avoid entirely. This would let the plugin development process have less friction and steps. For example, pulp_deb recently had to "add vagrant support". Plugin authors should not have to do that. All plugins should just be manually installed after Vagrant is done.
4) Currently Vagrant auto-detects the checkouts which is great for core devs, but for a new contributor who didn't check out the plugins correctly their Vagrant box comes out broken. We see this problem on IRC now and then, and it could be avoided with this adjustment also. Vagrant would not run migrations anymore and would not start Pulp, so when the new contributor's checkouts aren't right their box core would finish installing and everything would be fine even though their checkouts are not correct. They would still need to install the plugin which is their next step in all cases anyway.
I'm hoping that for Pulp3 we can have the Vagrant env only install core and have any contributor manually install the plugin they want. Specifically the manual parts would be three commands:
1) Install with pip, setup.py, or rpm
2) Run migraitons
3) start services with `pstart`
Also the installer for Core would no longer:
1) run migrations
2) start pulp services (only the message bus and mongodb would be auto-started)