Jagga Soorma
2012-Dec-14 02:00 UTC
[Puppet Users] New Puppet User: Issues with pre-commit script
Hi Guys, I am new to puppet so please let me know if this is not the correct place for asking this question. I am setting up a new puppet environment running the latest 3.x version. I have the puppet master and client setup correctly and tested with deploying a simple file to the client. Now, I am working on adding all the configs to SVN since I will have all my users checkout the nodes.pp file and place their node entries in this file via SVN. I would like to do some check on this file before it is checked in to make sure there are no syntax errors. I am using the following pre-commit scirpt that I came across online: -- #!/bin/bash REPOS="$1" TXN="$2" tmpfile=$(mktemp) export PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" for file in $(svnlook changed -t "$TXN" "$REPOS" | awk ''/^[^D].*\.pp$/ {print $2}'') do svnlook cat -t $TXN $REPOS $file > $tmpfile puppet parser validate $tmpfile &>/dev/null if [ $? -ne 0 ] then echo "Puppet syntax error in $file" 1>&2 exit 1 fi done -- Here is my nodes.pp file that is being edited: -- node ''testrhel.gene.com'' { include simtestfile } -- Now with this node.pp file I am able to update the testrhel server with the simtestfile just fine and the puppet parser validate command does not complain if I run it manually: -- [root@ssfpuppetd01 hooks]# puppet parser validate /etc/puppet/manifests/nodes.pp [root@ssfpuppetd01 hooks]# -- However, now when I try to svn ci this file I get an error and it looks like it is because the above command returns a 1 for some reason: -- ..snip.. Sending nodes.pp Transmitting file data .svn: Commit failed (details follow): svn: Commit blocked by pre-commit hook (exit code 1) with output: + REPOS=/var/svn/repos/puppet + TXN=30-28 ++ mktemp + tmpfile=/tmp/tmp.EmWYD21813 + export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin + PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin ++ svnlook changed -t 30-28 /var/svn/repos/puppet ++ awk ''/^[^D].*\.pp$/ {print $2}'' + for file in ''$(svnlook changed -t "$TXN" "$REPOS" | awk ''\''''/^[^D].*\.pp$/ {print $2}''\'''')'' + svnlook cat -t 30-28 /var/svn/repos/puppet manifests/nodes.pp Sending nodes.pp Transmitting file data .svn: Commit failed (details follow): svn: Commit blocked by pre-commit hook (exit code 1) with output: + REPOS=/var/svn/repos/puppet + TXN=30-28 ++ mktemp + tmpfile=/tmp/tmp.EmWYD21813 + export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin + PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin ++ svnlook changed -t 30-28 /var/svn/repos/puppet ++ awk ''/^[^D].*\.pp$/ {print $2}'' + for file in ''$(svnlook changed -t "$TXN" "$REPOS" | awk ''\''''/^[^D].*\.pp$/ {print $2}''\'''')'' + svnlook cat -t 30-28 /var/svn/repos/puppet manifests/nodes.pp *+ puppet parser validate /tmp/tmp.EmWYD21813* *+ ''['' 1 -ne 0 '']''* + echo ''Puppet syntax error in manifests/nodes.pp'' Puppet syntax error in manifests/nodes.pp + exit 1 -- However, if I run that command manually it does not return any errors: -- [root@ssfpuppetd01 hooks]# puppet parser validate /tmp/tmp.EmWYD21813 [root@ssfpuppetd01 hooks]# cat /tmp/tmp.EmWYD21813 node ''testrhel.gene.com'' { include simtestfile } [root@ssfpuppetd01 hooks]# -- Any help would be greatly appreciated. Thanks, -J -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/W2HkSI7z5FcJ. 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.
Matthew Burgess
2012-Dec-14 10:49 UTC
Re: [Puppet Users] New Puppet User: Issues with pre-commit script
On Fri, Dec 14, 2012 at 2:00 AM, Jagga Soorma <jagga13@gmail.com> wrote:> #!/bin/bash > > REPOS="$1" > TXN="$2" > tmpfile=$(mktemp) > export > PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" > > for file in $(svnlook changed -t "$TXN" "$REPOS" | awk ''/^[^D].*\.pp$/ > {print $2}'') > do > svnlook cat -t $TXN $REPOS $file > $tmpfile > puppet parser validate $tmpfile &>/dev/nullThat ''&'' looks a little odd there. I think what you probably want is puppet parser validate $tmpfile >/dev/null 2>&1 However, while debugging your issue, I''d recommend capturing the output: puppet parser validate $tmpfile >/tmp/puppet-validation.log 2>&1 That should at least give you a hint as to what''s going on...hopefully! Regards, Matt. -- 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.
Jagga Soorma
2012-Dec-14 17:42 UTC
Re: [Puppet Users] New Puppet User: Issues with pre-commit script
Thanks for your reply Matthew. I changed that line to the following: /usr/bin/puppet parser validate $tmpfile >> /tmp/puppet-val.log 2>&1 Here is what the log is capturing (problem with the environment?): -- simran@shinda:/var/tmp/puppet/puppet/manifests$* svn ci -m ''testing'' nodes.pp* ..snip.. Sending nodes.pp Transmitting file data .svn: Commit failed (details follow): svn: Commit blocked by pre-commit hook (exit code 1) with output: Puppet syntax error in manifests/nodes.pp [root@ssfpuppetd01 hooks]#* cat /tmp/puppet-val.log* Error: Could not intialize global default settings: couldn''t find HOME environment -- expanding `~/.puppet'' -- Regards, -J On Friday, December 14, 2012 2:49:11 AM UTC-8, Matthew Burgess wrote:> > On Fri, Dec 14, 2012 at 2:00 AM, Jagga Soorma <jag...@gmail.com<javascript:>> > wrote: > > > #!/bin/bash > > > > REPOS="$1" > > TXN="$2" > > tmpfile=$(mktemp) > > export > > > PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" > > > > > for file in $(svnlook changed -t "$TXN" "$REPOS" | awk ''/^[^D].*\.pp$/ > > {print $2}'') > > do > > svnlook cat -t $TXN $REPOS $file > $tmpfile > > puppet parser validate $tmpfile &>/dev/null > > That ''&'' looks a little odd there. I think what you probably want is > > puppet parser validate $tmpfile >/dev/null 2>&1 > > However, while debugging your issue, I''d recommend capturing the output: > > puppet parser validate $tmpfile >/tmp/puppet-validation.log 2>&1 > > That should at least give you a hint as to what''s going on...hopefully! > > Regards, > > Matt. >-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/YpOlchBjNg0J. 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.
Matthew Burgess
2012-Dec-15 22:04 UTC
Re: [Puppet Users] New Puppet User: Issues with pre-commit script
On Fri, Dec 14, 2012 at 5:42 PM, Jagga Soorma <jagga13@gmail.com> wrote:> Thanks for your reply Matthew. I changed that line to the following: > > /usr/bin/puppet parser validate $tmpfile >> /tmp/puppet-val.log > 2>&1 > > Here is what the log is capturing (problem with the environment?): > > -- > simran@shinda:/var/tmp/puppet/puppet/manifests$ svn ci -m ''testing'' nodes.pp > > ..snip.. > Sending nodes.pp > Transmitting file data .svn: Commit failed (details follow): > svn: Commit blocked by pre-commit hook (exit code 1) with output: > Puppet syntax error in manifests/nodes.pp > > [root@ssfpuppetd01 hooks]# cat /tmp/puppet-val.log > Error: Could not intialize global default settings: couldn''t find HOME > environment -- expanding `~/.puppet''OK. Subversion calls hook scripts with an empty environment for security reasons. See http://svnbook.red-bean.com/en/1.7/svn.reposadmin.create.html#svn.reposadmin.create.hooks. So, your hook script is going to have to set HOME itself. Regards, Matt. -- 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.
Jakov Sosic
2012-Dec-16 00:06 UTC
Re: [Puppet Users] New Puppet User: Issues with pre-commit script
On 12/14/2012 03:00 AM, Jagga Soorma wrote:> Hi Guys, > > I am new to puppet so please let me know if this is not the correct > place for asking this question. I am setting up a new puppet > environment running the latest 3.x version. I have the puppet master > and client setup correctly and tested with deploying a simple file to > the client. Now, I am working on adding all the configs to SVN since I > will have all my users checkout the nodes.pp file and place their node > entries in this file via SVN. I would like to do some check on this > file before it is checked in to make sure there are no syntax errors. I > am using the following pre-commit scirpt that I came across online:Take a look at my precommit script and modify it to suit SVN... You will need puppet & rubygem-puppet-lint to get it to work: http://kosjenka.srce.hr/~jsosic/puppet/check_puppet.rb -- Jakov Sosic www.srce.unizg.hr -- 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.