Проверить синтаксис кода можно 2 способами

— Изначально доступный через команду типа:

puppet parser validate /etc/puppet/modules/test1/manifests/*

— Поставить более продвинутый спеллчекер рpuppet-lint через gem install puppet-lint и затем проверять файлы (заодно можно чуть причесать синтаксис ключём --fix):

puppet-lint --fix /etc/puppet/modules/test1/manifests/*
Версия ruby 2.2 + ломает puppet 3.8

This Blocker bug has sat Unresolved for over two weeks. Syck goes away in 4.x, but it's required for 3.7.x today, in the real world, not "in the next release" nonsense. gem install syck and insert require 'syck' in puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_node_monkeypatch.rb before line 42

--- lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_node_monkeypatch.rb  2015-01-22 18:30:50.750823101 -0800
+++ lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_node_monkeypatch.rb  2015-01-22 18:31:01.815114582 -0800
@@ -39,5 +39,6 @@
 if defined?(YAML::Syck::Node)
   YAML::Syck.module_eval monkeypatch
 else
+  require 'syck' if RUBY_VERSION >= '2.2'
   Syck.module_eval monkeypatch
 end

 ``