3

Is there a method to filter which plugins are being syncd? I have a few new modules downloaded from the forge (puppetboard,puppetdb,python). These modules include plugins, they are also only needed on the puppet master, the plugins are not needed on any of my clients.

Unfortunately the facter plugins within these modules are causing the puppet client to fail on some older systems that I cannot upgrade to the latest version of ruby/puppet/facter. These older systems are running legacy software that cannot run on a newer OS release without a insanely painful amount of hackery. All the rest of the rest of my plugins and custom facts work perfectly fine. So I want to keep plugin sync, but exclude these facts that are breaking the older systems.

Has anyone come up with a good method for partial plugin sync? I am not finding any solutions in my searches.

Zoredache
  • 128,755
  • 40
  • 271
  • 413
  • Unfortunately I don't know of any way for it to be anything but all or nothing. – Shane Madden Mar 10 '14 at 06:44
  • FYI: I have fixed my immediate problem, by patching the plugin code with problems to check the version, and exit if plugin would fail. If someone has a way to filter plugins I am still interested. – Zoredache Mar 10 '14 at 20:55

2 Answers2

2

There is no way to filter plugins.

But as you say in your comment, you need to write the facts/types to handle the OS they're running on. For types and providers you exit early.

For facts you can use confine.

рüффп
  • 620
  • 1
  • 11
  • 24
Steven
  • 3,009
  • 18
  • 18
1

Puppet itself does not support filtering the lists of plugins to be synced.

However, you can patch puppet to support this using the pluginsync_filter patch from CERN.

Afterwards you can whitelist modules like this via Hiera:

pluginsync_filter_enable: true
pluginsync_filter:
   - whitelisted
   - module
   - names

Note: AFAIK this patch is probably not publically supported, so you'll be on your own if you decide to use it.

ThiefMaster
  • 378
  • 4
  • 19