Part of my rollout scripts contains a "puppet --parseonly" check of all of our manifests and modules to do basic pre-runtime checks of syntax (or so I thought). It basically finds all applicable modules and echos an "import $MODULENAME" for each to the standard input of puppet, to which I also pass --manifest site.pp to give it the entry point to our top-level manifests. What it actually does is parse all of the manifests explicitly imported/included from site.pp, and parse the init.pp of all imported modules but nothing else. We''ve only just discovered this unfortunately after seeing syntax errors not being picked up in module subclasses. The "easy" solution of running something like find -iname "*.pp" -exec puppet --parseonly ''{}'' \; takes something like 5m30s on my local SSD drive so this is not a possibility. The puppet utility will not parse multiple files if you pass them to it, it seems but perhaps this is not the best way of doing things. I''ve read many other approaches on this list, most of which entail running pre- or post-commit hooks from version control to check the most recently changed files, but for various reasons this isn''t possible for us. I''d like to know if there would be any interest in being able to pass multiple files to puppet (to save constant re- initialization and forking new processes), and would it be feasible to implement? -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Eduardo S. Scarpellini
2010-Oct-04 12:31 UTC
Re: [Puppet Users] "Good" usage of --parseonly
Oliver, we use CSM hook-scripts to validate any ''''.pp'''' or ''''.erb'''' files and it works perfectly. I recommend you look at INOTIFY kernel feature for wait for I/O events in puppet modules directory. You can do that trought INCROND ( http://linux.die.net/man/8/incrond - crontab like) or homemade scripts (perl, python, etc). Read more at: http://www.linuxjournal.com/article/8478 []s 2010/10/4 Oliver Hookins <ohookins@gmail.com>> Part of my rollout scripts contains a "puppet --parseonly" check of > all of our manifests and modules to do basic pre-runtime checks of > syntax (or so I thought). It basically finds all applicable modules > and echos an "import $MODULENAME" for each to the standard input of > puppet, to which I also pass --manifest site.pp to give it the entry > point to our top-level manifests. > > What it actually does is parse all of the manifests explicitly > imported/included from site.pp, and parse the init.pp of all imported > modules but nothing else. We''ve only just discovered this > unfortunately after seeing syntax errors not being picked up in module > subclasses. The "easy" solution of running something like find -iname > "*.pp" -exec puppet --parseonly ''{}'' \; takes something like 5m30s on > my local SSD drive so this is not a possibility. The puppet utility > will not parse multiple files if you pass them to it, it seems but > perhaps this is not the best way of doing things. > > I''ve read many other approaches on this list, most of which entail > running pre- or post-commit hooks from version control to check the > most recently changed files, but for various reasons this isn''t > possible for us. I''d like to know if there would be any interest in > being able to pass multiple files to puppet (to save constant re- > initialization and forking new processes), and would it be feasible to > implement? > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscribe@googlegroups.com<puppet-users%2Bunsubscribe@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. > >-- Eduardo S. Scarpellini <scarpellini@gmail.com> -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
On Oct 4, 2:31 pm, "Eduardo S. Scarpellini" <scarpell...@gmail.com> wrote:> Oliver, > we use CSM hook-scripts to validate any ''''.pp'''' or ''''.erb'''' files and it > works perfectly. > I recommend you look at INOTIFY kernel feature for wait for I/O events in > puppet modules directory. You can do that trought INCROND (http://linux.die.net/man/8/incrond- crontab like) or homemade scripts > (perl, python, etc). > > Read more at:http://www.linuxjournal.com/article/8478Thanks, that''s a good suggestion that I had considered before. I''ll look into it.> > []s > > 2010/10/4 Oliver Hookins <ohook...@gmail.com> > > > > > > > > > > > Part of my rollout scripts contains a "puppet --parseonly" check of > > all of our manifests and modules to do basic pre-runtime checks of > > syntax (or so I thought). It basically finds all applicable modules > > and echos an "import $MODULENAME" for each to the standard input of > > puppet, to which I also pass --manifest site.pp to give it the entry > > point to our top-level manifests. > > > What it actually does is parse all of the manifests explicitly > > imported/included from site.pp, and parse the init.pp of all imported > > modules but nothing else. We''ve only just discovered this > > unfortunately after seeing syntax errors not being picked up in module > > subclasses. The "easy" solution of running something like find -iname > > "*.pp" -exec puppet --parseonly ''{}'' \; takes something like 5m30s on > > my local SSD drive so this is not a possibility. The puppet utility > > will not parse multiple files if you pass them to it, it seems but > > perhaps this is not the best way of doing things. > > > I''ve read many other approaches on this list, most of which entail > > running pre- or post-commit hooks from version control to check the > > most recently changed files, but for various reasons this isn''t > > possible for us. I''d like to know if there would be any interest in > > being able to pass multiple files to puppet (to save constant re- > > initialization and forking new processes), and would it be feasible to > > implement? > > > -- > > You received this message because you are subscribed to the Google Groups > > "Puppet Users" group. > > To post to this group, send email to puppet-users@googlegroups.com. > > To unsubscribe from this group, send email to > > puppet-users+unsubscribe@googlegroups.com<puppet-users%2Bunsubscribe@google groups.com> > > . > > For more options, visit this group at > >http://groups.google.com/group/puppet-users?hl=en. > > -- > Eduardo S. Scarpellini > <scarpell...@gmail.com>-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.