Before requesting a catalog for a managed node, or compiling one with puppet apply
,
Puppet collects system information, called facts, by using the Facter tool. The facts are assigned as values to variables that you can use anywhere in your manifests. Puppet also sets some additional special variables, called built-in variables, which behave a lot
like facts.
Puppet code can access the following facts when compiling a catalog:
-
Core facts from Facter.
-
Custom facts and external facts that are present in your modules.
facter -p
on the command line, or browse facts on node
detail pages in the Puppet Enterprise console. You can also use the PuppetDB
API to
explore or build tools to search and report on your infrastructure's facts.
Puppet honors fact values of of any data type. It does not convert Boolean, numeric, or structured facts to strings.
- Accessing facts from Puppet code
When you write Puppet code, you can access facts in two ways: with the$fact_name
syntax, or with the$facts['fact_name']
hash. - Built-in variables
In addition to Facter's core facts and custom facts, Puppet creates several variables for a node to facilitate managing it. These variables are called trusted facts, server facts, agent facts, master variables, and compiler variables.