So after some investigation and some discussion, it seems like it's
not worth the effort to do this. Let me justify that…
We had 2 action items, I'll explain each in turn:
- Overlaying katello's extra modules on top of the foreman installer
This is kind-of already done. The katello-installer package uses a
Puppetfile to fetch the modules at build time, and so is using the
same sources as the foreman-installer package. Additionally, if we
make katello-installer depend upon foreman-installer we have to solve
(a) the deduction problem in which we need to determine what modules
are already present in foreman-installer when building
katello-installer (to avoid duplicate files), and (b) ensuring that
the underlying foreman-installer rpm supplies perfectly compatible
modules to the katello modules.
(a) is quite solvable, but (b) is not so easy - simply assuming a
specific version of the foreman-installer rpm is considerably less
flexible than simply continuing to use the Puppetfile in the
katello-installer repo today. This is because the Puppetfile can lock
individual modules (consider where puppet-foreman 2.2 release breaks
katello-installer, so the Puppetfile in katello-installer can be
changed to require version 2.1).
So, given the katello-installer rpm is already consuming the upstream
puppet modules in the exact same way as foreman-installer, and retains
more flexibility and less problems by not being an overlay, I vote we
leave it at the status quo.
- Answers files, config files, and executables
Building on the conclusion of (1), it now seems silly to depend upon
the foreman-installer rpm just to be able to symlink to
/usr/sbin/foreman-installer. The differences in the two scripts as
they exist today are minimal (the foreman-installer script has a lot
of foreman-only things that don't make sense to port- although a
modifed version of --reset-db would be good). Additionally, we always
said we would need to ship the current answers and config files, so
again, it seems the current state of things is fine.
So basically, I feel we're already as integrated as we need to be, for
now. Both installers consume the same upstream modules, so there
should be no duplication of effort within the Puppet code itself. That
accounts for >95% of the codebase. There is a small item for
discussion about we sync things in the exectuable script, and
optionally the checks/ directory, between the two repos, but this
seems like a small overhead, and should probably be done manually.
For the record, I did an install using the method outlined in my
original post (using the foreman-installer rpm, plus the extra
modules, plus a symlink to foreman-installer) and it worked fine. So
did just installing katello-installer and running it - the two things
are effectively identical. We're really just discussing packaging and
I hope that's fairly clear - it's been tough to put into words because
I've see-sawed back and forth on the right way forward myself
Eric, Dominic, Ivan, you guys are fairly close to the respective
installers - what do you think?