voxpupuli / puppet-kmod

manage kernel module with puppet
Apache License 2.0
17 stars 63 forks source link

Make facts export optional #90

Open deric opened 2 years ago

deric commented 2 years ago

On a Debian installation I'm currently seeing almost 1k facts from kmod module

$ facter -y --puppet kmods | wc -l
973

Puppet 7 is preconfigured with soft limit for facts set to 2048.

$ facter -y | wc -l
1380

Combining default puppet facts with kmod facts can easily exceed this soft limit. Of course the limit can be increased, but I guess the main reason is performance. Currently I find little usage kmod facts. E.g. would it be possible to export only managed modules?

squaricdot commented 1 year ago

wanted to make an issue for this, but found it :)

yes puppet is now complaining because of too many facts. this module seems to be the culprit (for me)

please make it optional as not really needing it, by default.

dekonnection commented 1 year ago

Hi and thanks for your work on this module :)

We also encountered this issue here:

Warning: The current total number of facts: 2121 exceeds the number of facts limit: 2048

I agree with the previous messages, it would be really nice to be able to restrict facts to managed modules, or even completely disable these facts with a parameter.

treydock commented 1 year ago

Facts can not be enabled/disabled using parameters. Once you include a module with a custom fact it will get deployed to all Puppet agents using plugin sync. That is not something you can turn off selectively. Generally speaking facts don't know what's managed and unmanaged in Puppet so only doing modules that are part of Puppet isn't really possible either.

There are a few options.

One you could increase the number of facts your system allows: https://www.puppet.com/docs/puppet/7/configuration.html#number-of-facts-soft-limit

Another option is to attempt to disable the facts on the Puppet agent host using block list: https://www.puppet.com/docs/puppet/7/configuring_facter.html#configuring_facter-facter-conf-facts

deric commented 1 year ago

Facts can not be enabled/disabled using parameters.

@treydock Yes not directly, but facter code is processed locally and you can read configuration stored e.g. in a local config file.

dekonnection commented 1 year ago

Yes @deric , that's exactly what I meant: configuring the fact using a local config file 👍

tuxmea commented 1 year ago

Idea:

  1. Fact: check if a flag/config file exists and only process the kmod facts if the file is available.
  2. The kmod module needs a parameter (default false) to set the flag/config file only if the parameter is set to true.

This means that the kmod facts will be available on a second puppet agent run only.