Others may have heard me talk about this, but it’s time to write a real RFC about this.
Have a single git repository with all our installer scenario’s. We can separate this in packaging, to remove the katello scenario on Debian/Ubuntu for example.
Currently there’s a lot of duplication between the two repositories. Most checks are duplicated, migrations are applied in both places, hooks have overlap.
The katello-installer build is also complicated because it layers on top of foreman-installer. This is fragile and has broken a few times. By delivering a single installer with one big modules directory means our kafo module caches are always in sync.
It’s also easier to know exactly what is installed since you only need to check one package.
We will ship more modules. Especially on Debian this means more disk space used. This may be a few MB so it’s not that bad.
There can also be side effects. Currently there’s a bug that means puppet-service_wait breaks the systemd fact. This means we can’t apply systemd limits in katello-installer. It’s likely we’ll pull this bug into foreman-installer as well. This should motivate us to fix bugs earlier.
My initial approach was to slowly merge all the hooks and checks into foreman-installer until we could move over the configs and modules as well. I presented this at Cfgmgmtcamp earlier this year.
This week I decided to go the other way: start with moving everything over and then within the repository we can work to merge the hooks.
Proof of Concept
Today I started on a proof of concept. The result is that it builds, creates an RPM but I haven’t had time to test this on an actual system yet.