Puppet::Syntax checks for correct syntax in Puppet manifests, templates, and Hiera YAML.
Puppet::Syntax is supported with:
For the specific versions that we test against, see the GitHub Actions workflow.
To install Puppet::Syntax, either add it to your module's Gemfile or install the gem manually.
gem 'puppet-syntax'
And then execute:
bundle install
gem install puppet-syntax
To configure Puppet::Syntax, add any of the following settings to your Rakefile
.
PuppetSyntax.exclude_paths = ["vendor/**/*"]
hieradata_paths
. This is useful if you use Hiera data inside your module.PuppetSyntax.hieradata_paths = ["**/data/**/*.yaml", "hieradata/**/*.yaml", "hiera*.yaml"]
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"]
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
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 a syntax check on Hiera values, set:
PuppetSyntax.check_hiera_data = true
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 => [
:syntax,
:lint,
:spec,
]
Rakefile
, run:$ bundle exec rake syntax
---> syntax:manifests
---> syntax:templates
---> syntax:hiera:yaml
$ 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
It will validate the syntax of each Hiera key. for values, it will check if the interpolation function syntax is correct. Wrong:
foo:
"%{lookup('baz'):3306}": []
correct would be:
foo:
"%{lookup('baz')}:3306": []
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.
git checkout -b my-new-feature
).git commit -am 'Add some feature'
).git push origin my-new-feature
).lib/puppet-syntax/version.rb