There currently isn't a way.
----
Since this is the developer's list, I'll go into some details about what would be required for it to work:
Currently pluginsync happens before any facts are returned to the system. This makes it difficult to do anything based on OS version. I've had chats about changing Puppet's communication a bit so it sends some core facts (this might have a lot of overlap with things that could be trusted facts - osfamily probably isn't going to change without requiring a new certificate) before pluginsync so they can be used to determine the environment during node classification; using them to do more precise pluginsync also makes sense.
Then you need a way to determine which plugins to sync. I see three options
- have a way to query Facter for platform-specific criteria for external facts, and send that to the master to be used in evaluating which facts to sync
- have a hierarchy in external facts, so you can explicitly target facts at certain classes of machines based on the core facts sent before pluginsync; that might interact in useful ways with Facter's upcoming config file, but would need some way in each module to also specify what facts are synced where. Something simple might be syncing based on osfamily, so you'd have
<MODULEPATH>/<MODULE>/facts.d/windows
<MODULEPATH>/<MODULE>/facts.d/redhat
etc.