A library to work with Puppet manifests, test them and eventually replace everything ruby.
puppetresources -p /where/your/puppet/files/are -o node.name.com
stack install language-puppet
git clone https://github.com/bartavelle/language-puppet.git cd language-puppet # Using nix cabal2nix . > default.nix nix-build shell.nix # Using stack ln -s stack-10.yaml stack.yaml stack build
puppetresources command is a command line utility that let you interactively compute catalogs on your local computer.
It is much faster than its ruby counterpart, and has been designed for giving assistance to the Puppet catalog writer.
There are 4 different modes:
--nodewill display all resources on screen in a nice user-friendly colored fashion.
--alldisplays statitics and optionally shows dead code.
--parseonly goes as far as parsing. No interpretation.
--showcontentto display file content.
Catalog is not computed exactly the same way Puppet does. Some good practices are enforced. A strict and more permissive mode are provided.
Command line arguments
This argument is mandatory except in
parsemode. It must point to the base of the puppet directory (the directory that contains the
node mode. This let you specify the name of the node you wish to compute the catalog for.
stats mode. If you specify
allnodesit will compute the catalogs for all nodes that are specified in
site.pp(this will not work for regexp-specified or the default nodes). You can also specify a list of nodes separated by a comma.
--deadcode, it will display the list of puppet files that have not been used.
This is useful as automated tests, to check a change didn’t break something. You might want to run this option with
Filters the resources of the resulting catalog by type. Using PCRE regex is supported.
Filters the resources of the resulting catalog by name. Using PCRE regex is supported.
-nis the exact name of a file type resource defined in the catalog, this will display the file content nicely. Useful for debugging templates.
puppetresources -p . -o mynodename -n '/etc/motd' --showcontent
Possible values are : DEBUG, INFO, NOTICE, WARNING, ERROR
Expects the url of a live PuppetDB.
Expects a path to a fake PuppetDB, represented as a YAML file on disk. This option is pretty slow but can be invaluable to test exported resources tricks.
Expects the path to the
Expects a list of comma-separated modules. The interpreter will not try to parse and evaluate the defined types and classes from this module. This is useful for using modules that use bad practices forbidden by
When this flag is set, exported resources, catalogs and facts are saved in the PuppetDB. This is useful in conjunction with
When this flag is set, exported resources are saved in the PuppetDB. This is useful in conjunction with
Displays the catalog as a Puppet-compatible JSON file, that can then be used with
Enable strict check. Strict is less permissive than vanilla Puppet. It is meant to prevent some pitfalls by enforcing good practices. For instance it refuses to
lookup an hash with an unknown key and return
Disable the extra tests from
parse mode. Specify the puppet file to be parsed. Variables are not resolved. No interpretation.
Output version information and exist.
Settings defaults using a yaml file
Defaults for some of these options can be set using a
/yourworkingdirectory/tests/defaults.yaml file. For instance
OptionalTests is checking that all users and groups are known. Because some of these users and groups might be defined outside puppet, a list of known ones is used internally. This can be overridden in that file using the key
Please look at the template file for a list of possible defaults.
pdbquery command will work with different implementations of PuppetDB (the official one with its HTTP API, the file-based backend and dummy ones). It can be used to:
export data from production PuppetDB to a file (in order to debug some issue with
query a Puppetdb
Here is a list of command line arguments :
The URL of the PuppetDB when working with a remote PuppetDB, a file path when working with the file-based test implementation.
The type of PuppetDB to work with:
dummy: a dummy PuppetDB.
remote: a "real" PuppetDB, accessed by its HTTP API.
test: a file-based backend emulating a PuppetDB.
Output facts for a specific node (json)
Output all nodes (json)
Output all resources for a specific node (json)
Dump all facts to
Create a test DB from the current DB
Adds facts to the test DB for the given node name, if they are not already defined.
Output version information and exit.
Unsupported Puppet idioms or features
OS Xis supported when using the latest
- puppet functions
requirefunction is not supported (see issue #17)
importfunction is not supported
the deprecated node inheritance feature is not supported
- custom ruby functions