Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Build Status Gem Version Gem Downloads


Puppet::Syntax checks for correct syntax in Puppet manifests, templates, and Hiera YAML.

Version support

Puppet::Syntax is supported with:

  • Puppet >= 5.0 that provides the validate face.
  • Ruby >= 2.4

For the specific versions that we test against, see the TravisCI config.


To install Puppet::Syntax, either add it to your module's Gemfile or install the gem manually.

  • To install with the Gemfile, add:
gem 'puppet-syntax'

And then execute:

bundle install
  • To install the gem yourself, run:
gem install puppet-syntax


To configure Puppet::Syntax, add any of the following settings to your Rakefile.

  • To exclude certain paths from the syntax checks, set:
PuppetSyntax.exclude_paths = ["vendor/**/*"]
  • To configure specific paths for the Hiera syntax check, specify hieradata_paths. This is useful if you use Hiera data inside your module.
PuppetSyntax.hieradata_paths = ["**/data/**/*.yaml", "hieradata/**/*.yaml", "hiera*.yaml"]
  • To configure specific paths for the Puppet syntax checks or for the templates checks, specify manifests_paths or templates_paths respectively. This is useful if you want to check specific paths only.
PuppetSyntax.manifests_paths = ["**/environments/future/*.pp"]
PuppetSyntax.templates_paths = ["**/modules/**/templates/*.erb"]
  • To ignore deprecation warnings, disable fail_on_deprecation_notices. By default, puppet-syntax fails if it encounters Puppet deprecation notices. If you are working with a legacy code base and want to ignore such non-fatal warnings, you might want to override the default behavior.
PuppetSyntax.fail_on_deprecation_notices = false
  • To enable a syntax check on Hiera keys, set:
PuppetSyntax.check_hiera_keys = true

This reports common mistakes in key names in Hiera files, such as:

  • Leading :: in keys, such as: ::notsotypical::warning2: true.
  • Single colon scope separators, such as: :picky::warning5: true.
  • Invalid camel casing, such as: noCamelCase::warning3: true.
  • Use of hyphens, such as: no-hyphens::warning4: true.


  • To enable Puppet::Syntax, include the following in your module's Rakefile:
require 'puppet-syntax/tasks/puppet-syntax'

For Continuous Integration, use Puppet::Syntax in conjunction with puppet-lint and spec tests. Add the following to your module's Rakefile:

task :test => [
  • To test all manifests and templates, relative to the location of the Rakefile, run:
$ bundle exec rake syntax
---> syntax:manifests
---> syntax:templates
---> syntax:hiera:yaml
  • To return a non-zero exit code and an error message on any failures, run:
$ bundle exec rake syntax
---> syntax:manifests
rake aborted!
Could not parse for environment production: Syntax error at end of file at demo.pp:2
Tasks: TOP => syntax => syntax:manifests
(See full trace by running task with --trace)


Puppet::Syntax makes the following checks in the directories and subdirectories of the module, relative to the location of the Rakefile.


Checks .yaml files for syntax errors.

By default, this rake task looks for all .yaml files in a single module under:

  • **/data/**/*.yaml
  • hieradata/**/*.yaml
  • hiera*.yaml


Checks all .pp files in the module for syntax errors.



Checks .erb files in the module for syntax errors.


Checks .epp files in the module for syntax errors.

EPP checks are supported in Puppet 4 or greater, or in Puppet 3 with the future parser enabled.


  1. Fork the repo.
  2. Create your feature branch (git checkout -b my-new-feature).
  3. Commit your changes (git commit -am 'Add some feature').
  4. Push to the branch (git push origin my-new-feature).
  5. Create new Pull Request.
You can’t perform that action at this time.