You can also use the puppetlabs stdlib module which provides an easy
ad-hoc way of defining arbitrary facts on a system using text files in
/etc/facter/facts.d/
more info:
https://puppetlabs.com/blog/module-of-the-week-puppetlabsstdlib-puppetlabs-standard-library-part-3
Many facts are best discovered pragmatically, but something are just
arbitrary which is where you want soemthing like this. For example we
have custom facts that pragmatically how the serial console of a
server should be setup based on what hardware and connections are
discovered, but use facts.d on workstatons we mange so users can self
select a la cart configurations suchas if they want NFS automounted
and certain other optional configuration packages.
-Jon