Hi all,
(TL;DR? Action items are at the bottom :P)
Among the many many things that happened last week (trip reports to follow
:P), a few of us sat down with some of the Puppet community to discuss the
current Puppet 4 woes in Foreman, and how we can potentially work together
better going forward.
Present for our side were:
- Myself (gwmngilfen)
- Dmitri (witlessb)
- Marek (mhulan / ares)
- Ewoud (ewoud)
Apologies for not being able to name everyone on the Puppet side - I know
Eric Sorenson (eric0), vstone and zipkid were there, and some others.
We started out with general discussion and an outline of the issues - why
the Proxy needs to load the puppet libs, what Kafo needs them for, and so
on.
Getting into specifics, I'll go by topic:
- Kafo / installer support
As previously discussed on this list, we can't use any kind of API service
for the installer, as by definition nothing is running at install time. We
asked if there was any plan or chance of releasing the parser as a
standalone gem that we could use.
Turns out there is - puppet-strings is the lib, and it can emit JSON
regarding the classes parsed. Marek felt that this was a viable approach,
but the amount of work is still to be determined. Certainly there will be
some packaging at the least.
It seemed Puppet are open to collaboration on puppet-strings if we need
more from it - certainly we discussed if it would be possible to make some
of the dependencies for puppet-strings optional, as we only need the JSON
from it. No firm decisions there yet, but there's active work on the Puppet
side on this gem. There is a need to release the gem to Rubygems so we can
package it for our installer though.
This also opens up the potential to cache the JSON for the installer
modules at packaging time, for a nice decrease in execution time of the
installer itself.
I'll let Marek reply with further thoughts on how hard this will be, but it
sounded positive to me, albeit the biggest piece of the work.
- Smart proxy
Dmitri felt that for the proxy, puppet-strings was probably inferior to
using the new Resources API in the Puppetserver. We already have code in
place for this, so it seemed sensible to go forwards from there, especially
in regard to how/when we try to load the puppet libs - there's no need to
if we're wholly relying on the API.
Dmitri felt that this was relatively easy from our side, and I believe he's
already hacking on it. I'll leave it to him to comment further. He did
request that the API be looked at for ways to improve it's efficiency, and
to add an etag for caching to both the environments and resources APIs
(jira #server-1111)
- Puppet modules
Ewoud felt the puppet modules themselves are largely Puppet 4 compliant
already - and as a Puppet 4 user myself, I concur. We do have a few small
issues on us though:
- Moving the report processor to lib (I've opened a PR to discuss this)
- Improving our support for puppetserver, especially on java options
(underway in a PR) - Update community-templates to use the PC1 repos
- Fixing the smart_proxy provider which registers the proxy
Regarding the last item, the issue is that we rely on apipie_bindings in
our provider, which can't be loaded in the Puppet 4 ruby stack.
There was a discussion about the merits of apipie vs plain API use in the
providers. Given the difficulties packaging apipie for the puppet stack,
and how to load it, vs the need for occasional fixes to the providers if
the API changes, it was felt that it's probably the least work to drop
apipie from our puppet modules.
We had an offer from @liamjbennett to contribute a near-complete set of
pure api-only types and providers for most objects in Foreman, which would
be a big benefit to the community. Much appreciated!
- Ongoing collaboration
We were reminded that Puppet hold a weekly dev hangout, which we'd be
welcome to join if we experience issues in the future - details in the
#puppet-dev IRC topic. Eric and I also agreed to be points-of-contact for
each other if there are blockers or things that come up, so do let me know
if I can help push any issues forwards.
Once the Resources API and and puppet-strings are in progress, it's
probably fairly easy to test against HEAD of those things to spot
upcoming issues. We can look into this later.
There was also a brief discussion of maybe covering/promoting a
Puppet4-compatible release of Foreman in a joint manner - blog posts,
social media, etc. I'm open to that.
- Conclusion
Phew, quite the wall of text! Overall I got a good feeling from the meeting
- we all want to see this fixed. Here's a summary of the action items I
heard - speak up if I missed something or got something wrong:
- Puppet to release puppet-strings as a gem
- Further work there to be determined, possibly around dependencies
- Puppet to add etag to the environments and resources APIs
-
https://tickets.puppetlabs.com/browse/SERVER-1111 is merged - when will
it hit a release? - Need same for resources API
-
https://tickets.puppetlabs.com/browse/SERVER-1111 is merged - when will
- Liam to send in PR(s) for the types/providers
- Need someone to integrate them afterwards
- Marek to detail Kafo update workload
- Dmitri to update the proxy
- Greg to look at the report processor and community-templates
- Greg & Eric to figure out joint promotion once the work is complete
- Greg & Eric to keep in touch going forwards
Cheers!