Facts are loaded, and distributed from the master, before the catalog compilation step. See https://docs.puppet.com/facter/3.3/custom_facts.html#external-facts. Rather than distributing the json files as a File resource, you could add an executable fact to a module and the fact could communicate with the CMDB to gather the correct fact information.
However, I think what you really want is an External Node Classifier ( https://puppet.com/docs/puppet/5.3/nodes_external.html). Similar to a function, it runs on the master, but unlike functions it happens before catalog compilation, so the hash of key/values it returns can be used during catalog compilation. That seems like the perfect fit for your use case, except ENCs need to return yaml, not json. Rob Nelson [email protected] On Tue, Dec 5, 2017 at 5:13 AM, buoyant_puppy <[email protected]> wrote: > > > On Friday, December 1, 2017 at 5:59:51 PM UTC+1, R.I. Pienaar wrote: >> >> >> All functions like foo() run on the master during compile. It's a multi >> phase process, the only way a node can influence the compile time is >> using facts. >> >> You could integrate your CMDB with puppet using a hiera data function >> that could exist as a tier in your hierarchy >> > > Thanks, that makes sense now. I'm looking into hiera, but I think I have > another alternative as well. If I put my json files in the facter/facts.d > directory (on the agent), it will be automatically loaded. > The only somewhat minor downside is that facter runs first, so the data it > fetches will only be available in the next puppet run. > > I'm not sure if that's better or worse than the hiera option as I didn't > get hiera working yet. > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/puppet-users/1bbf939a-75a8-49a7-9b11-8e073b945335%40googlegroups.com > <https://groups.google.com/d/msgid/puppet-users/1bbf939a-75a8-49a7-9b11-8e073b945335%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/CAC76iT9zbxyOtdSr0EZ4Tu7Fnbxtzje-pz64K7TtSe4UzdE5NQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
