Wouldn't have worked anyway, change "print" to "echo" and I forgot #!/ bin/bash... That's what I get for writing code from memory ;)
That's strange, I just put this in my Puppet server: node 'puppetmaster' { file { '/etc/shell_file': ensure => present, owner => 'root', group => 'root', mode => '0755', source => 'puppet:///modules/puppet/shell_file', } exec { '/etc/shell_file': require => File['/etc/shell_file'] } } [root@co1puppet01 live]# cat ../../modules/live/puppet/files/ shell_file #!/bin/bash export LAN=eth1 export WAN=eth0 CMD="tc filter add dev ${WAN} parent 1:0 prio 4 protocol ip u32 match ip tos 0x880xff classid 1:12" OUT=$($CMD) RET=$? echo "Command '$CMD' returned $RET" 2>&1 > /tmp/QoS.out echo "Command '$CMD' output '$OUT'" 2>&1 >> /tmp/QoS.out CMD="iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p udp --sport 2345 -j TOS --set-tos 0x28" OUT=$($CMD) RET=$? echo "Command '$CMD' returned $RET" 2>&1 >> /tmp/QoS.out echo "Command '$CMD' output '$OUT'" 2>&1 >> /tmp/QoS.out CMD="iptables-save" OUT=$($CMD) RET=$? echo "Command '$CMD' returned $RET" 2>&1 >> /tmp/QoS.out echo "Command '$CMD' output '$OUT'" 2>&1 >> /tmp/QoS.out [root@puppetmaster live]# puppetd --test info: Caching catalog for puppetmaster info: Applying configuration version '1308324915' notice: /Stage[main]//Node[puppetmaster]/Exec[/etc/shell_file]/ returns: executed successfully notice: Finished catalog run in 1.04 seconds [root@puppetmaster]# cat /tmp/QoS.out Command 'tc filter add dev eth0 parent 1:0 prio 4 protocol ip u32 match ip tos 0x880xff classid 1:12' returned 1 Command 'tc filter add dev eth0 parent 1:0 prio 4 protocol ip u32 match ip tos 0x880xff classid 1:12' output '' Command 'iptables -t mangle -A FORWARD -i eth1 -o eth0 -p udp --sport 2345 -j TOS --set-tos 0x28' returned 2 Command 'iptables -t mangle -A FORWARD -i eth1 -o eth0 -p udp --sport 2345 -j TOS --set-tos 0x28' output '' Command 'iptables-save' returned 0 Command 'iptables-save' output '# Generated by iptables-save v1.3.5 on Fri Jun 17 15:48:48 2011 *mangle :PREROUTING ACCEPT [3642:790381] :INPUT ACCEPT [2591:636935] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [2551:866979] :POSTROUTING ACCEPT [2551:866979] COMMIT # Completed on Fri Jun 17 15:48:48 2011 # Generated by iptables-save v1.3.5 on Fri Jun 17 15:48:48 2011 *filter :INPUT ACCEPT [2637:639987] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [2588:875945] COMMIT # Completed on Fri Jun 17 15:48:48 2011' I'm running out of ideas. You don't have noexec on /tmp do you? No, you said you could run it as root... Anyone else? On Jun 17, 4:31 pm, Annie Rana <annier...@gmail.com> wrote: > Hi Luke, > > I replaced my shell script with the one you wrote. Same old error message > appeared again 'change from notrun to 0 failed: /tmp/QoS/QoS.sh returned 1 > instead of o at /etc/puppet/manifests/site.pp' > . Your script didn't generate any log at client machine. Now I am sure about > one thing that there is no issue with the shell script itself. The exec > command is having hiccup even before executing the shell. I even tried > command paremeter in exec but no use. Do you know anyother way to execute > bash shell in puppet? > > Thanks much, > > Annie > > On Fri, Jun 17, 2011 at 4:30 PM, Annie Rana <annier...@gmail.com> wrote: > > Hi Luke, > > > I replaced my shell script with the one you wrote. Same old error message > > appeared again 'change from notrun to 0 failed: /tmp/QoS/QoS.sh returned 1 > > instead of o at /etc/puppet/manifests/site.pp'. Your script didn't generated > > any log at client machine. Now I am sure about one thing that there is no > > issue with the shell script itself. The exec command is having hiccup even > > before executing the shell. I even tried command paremeter in exec but no > > use. Do you know anyother way to execute bash shell in puppet? > > > Thanks much, > > > Annie > > > On Fri, Jun 17, 2011 at 4:06 PM, Luke Bigum <luke.bi...@lmax.com> wrote: > > >> I'm out of ideas and I'd resort to hacking the script a bit to get > >> some debugging output. Try just this in QoS.sh to try identify what's > >> failing: > > >> export LAN=eth1 > >> export WAN=eth0 > >> CMD="tc filter add dev ${WAN} parent 1:0 prio 4 protocol ip u32 match > >> ip tos 0x880xff classid 1:12" > >> OUT=$($CMD) > /tmp/QoS.out 2>&1 > >> RET=$? > >> print "Command $CMD returned $RET" >> /tmp/QoS.out 2>&1 > >> CMD="iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p udp --sport > >> 2345 -j TOS --set-tos 0x28" > >> OUT=$($CMD) >> /tmp/QoS.out 2>&1 > >> RET=$? > >> print "Command $CMD returned $RET" >> /tmp/QoS.out 2>&1 > >> CMD="iptables-save" > >> OUT=$($CMD) >> /tmp/QoS.out 2>&1 > >> RET=$? > >> print "Command $CMD returned $RET" >> /tmp/QoS.out 2>&1 > > >> Or something like that. > > >> On Jun 17, 4:01 pm, Annie Rana <annier...@gmail.com> wrote: > >> > Thanks again Peter but sorry it didn't work out either. > > >> > On Fri, Jun 17, 2011 at 3:52 PM, Peter Bukowinski <pmb...@gmail.com> > >> wrote: > >> > > In your QoS.sh file, make sure to use explicit paths to executables, > >> e.g: > > >> > > use '/sbin/iptables -blah …' NOT 'iptables -blah …' > > >> > > -- > >> > > Peter M. Bukowinski > >> > > Systems Engineer > >> > > Janelia Farm Research Campus, HHMI > > >> > > On Friday, June 17, 2011 at 10:44 AM, Annie Rana wrote: > > >> > > > Hi Luke, > >> > > > What's your shell script expected to > >> > > > do? > >> > > > The shell script would generate Iptables rules > > >> > > > How do you know it didn't work? > >> > > > I can check using ipatbles -L or iptables -t mangle -L commands > > >> > > > If you run it by hand in a root shell, does it work then? > >> > > > Yes > > >> > > > If so, > >> > > > there might be an environment problem when running from Puppet, like > >> > > > $PATH or something. Try set the parameter "logoutput => true" in the > >> > > > exec resource. > >> > > > I did but no affect. > > >> > > > Thanks again, much appreciated your help and time. > >> > > > On Fri, Jun 17, 2011 at 3:26 PM, Luke Bigum <luke.bi...@lmax.com > >> (mailto: > >> > > luke.bi...@lmax.com)> wrote: > >> > > > > How do you know it didn't work? What's your shell script expected > >> to > >> > > > > do? If you run it by hand in a root shell, does it work then? If > >> so, > >> > > > > there might be an environment problem when running from Puppet, > >> like > >> > > > > $PATH or something. Try set the parameter "logoutput => true" in > >> the > >> > > > > exec resource. > > >> > > > > On Jun 17, 3:18 pm, Annie Rana <annier...@gmail.com (mailto: > >> > > annier...@gmail.com)> wrote: > >> > > > > > Thanks but it couldn't work though i got the message that shell > >> > > script is > >> > > > > > successfully executed. > > >> > > > > > On Fri, Jun 17, 2011 at 2:44 PM, Luke Bigum < > >> luke.bi...@lmax.com(mailto: > >> > > luke.bi...@lmax.com)> wrote: > >> > > > > > > Annie, > > >> > > > > > >http://docs.puppetlabs.com/references/stable/type.html#exec > > >> > > > > > > By default the expected return code is probably zero, your > >> script > >> > > is > >> > > > > > > returning 1. Whether this is correct or not I don't know, but > >> you > >> > > can > >> > > > > > > tell puppet to expect a different return code: > > >> > > > > > > exec { '/etc/shell_file': > >> > > > > > > require => File['/etc/shell_file'], > >> > > > > > > returns => 1, > >> > > > > > > } > > >> > > > > > > On Jun 17, 2:36 pm, Annie Rana <annier...@gmail.com (mailto: > >> > > annier...@gmail.com)> wrote: > >> > > > > > > > I apologize for posting wrong log messages, here is the > >> correct > >> > > log: > > >> > > > > > > > notice: Starting catalog run > >> > > > > > > > notice: //File[/tmp/QoS/QoS.sh (http://QoS.sh)]/ensure: > >> created > >> > > > > > > > err: //Exec[/tmp/QoS/QoS.sh (http://QoS.sh)]/returns: > >> change > >> > > from notrun to 0 failed: > >> > > > > > > > /tmp/QoS/QoS.sh (http://QoS.sh) returned 1 instead of 0 at > >> > > > > > > /etc/puppet/manifests/site.pp:10 > >> > > > > > > > notice: Finished catalog run in 0.46 seconds > > >> > > > > > > > Any help please? > > >> > > > > > > > On Fri, Jun 17, 2011 at 2:09 PM, Annie Rana < > >> annier...@gmail.com(mailto: > >> > > annier...@gmail.com)> wrote: > >> > > > > > > > > Hi Peter, thanks for your reply. I managed to copy the > >> shell > >> > > file > >> > > > > > > puppet > >> > > > > > > > > client using the file resource recipe you specified but > >> exec is > >> > > > > > > throwing an > >> > > > > > > > > error, which is as follows: > > >> > > > > > > > > info: No classes to store > >> > > > > > > > > info: Caching catalog at > >> /var/lib/puppet/state/localconfig.yaml > >> > > > > > > > > notice: Starting catalog run > >> > > > > > > > > err: //File[/tmp/QoS/QoS.sh (http://QoS.sh)]/ensure: > >> change > >> > > from absent to file failed: > >> > > > > > > > > Could not set file on ensure: No such file or directory - > >> > > > > > > > > /tmp/QoS/QoS.sh.puppettmp at > >> /etc/puppet/manifests/site.pp:7 > >> > > > > > > > > notice: //Exec[/tmp/QoS/QoS.sh (http://QoS.sh)]: > >> Dependency > >> > > file[/tmp/QoS/QoS.sh (http://QoS.sh)] has 1 > >> > > > > > > > > failures > >> > > > > > > > > warning: //Exec[/tmp/QoS/QoS.sh (http://QoS.sh)]: > >> Skipping > >> > > because of failed > >> > > > > > > dependencies > >> > > > > > > > > notice: Finished catalog run in 0.38 seconds > > >> > > > > > > > > When I tried running the shell script manually using the > >> > > following > >> > > > > > > command > > >> > > > > > > > > '/tmp/QoS/QoS.sh (http://QoS.sh);echo$?' > > >> > > > > > > > > , it worked fine printing 0 at the end. Any help what is > >> wrong > >> > > with > >> > > > > > > exec > >> > > > > > > > > resource recipe? > > >> > > > > > > > > Thanks in advance for your time. > > >> > > > > > > > > Regards, > > >> > > > > > > > > A. > > >> > > > > > > > > On Thu, Jun 16, 2011 at 8:42 PM, Peter Bukowinski < > >> > > pmb...@gmail.com (mailto:pmb...@gmail.com) > >> > > > > > > > wrote: > > >> > > > > > > > > > It sounds like you haven't set up the puppet fileserver > >> yet. > >> > > Choose a > >> > > > > > > > > > directory that will hold files you want to copy to > >> clients. I > >> > > use > >> > > > > > > > > > /opt/files, so that's what is in my example. Create > >> > > fileserver.conf in > >> > > > > > > the > >> > > > > > > > > > same directory as puppet.conf and add these lines: > > >> > > > > > > > > > [files] > >> > > > > > > > > > path /opt/files > >> > > > > > > > > > allow *.client.domain > > >> > > > > > > > > > Put your shell file in the path you specified. Now you > >> just > >> > > need to > >> > > > > > > set up > >> > > > > > > > > > a file and exec resource. Note the source item in the > >> file > >> > > resource > >> > > > > > > and the > >> > > > > > > > > > require item in exec. > > >> > > > > > > > > > file { '/etc/shell_file': > >> > > > > > > > > > ensure => present, > >> > > > > > > > > > owner => 'root', > >> > > > > > > > > > group => 'root', > >> > > > > > > > > > mode => '0755', > >> > > > > > > > > > source => 'puppet://puppet/files/shell_file', > >> > > > > > > > > > } > > >> > > > > > > > > > exec { '/etc/shell_file': require => > >> File['/etc/shell_file'] > >> > > } > > >> > > > > > > > > > -- > >> > > > > > > > > > Peter M. Bukowinski > >> > > > > > > > > > Systems Engineer > >> > > > > > > > > > Janelia Farm Research Campus, HHMI > > >> > > > > > > > > > On Thursday, June 16, 2011 at 3:17 PM, annierana wrote: > > >> > > > > > > > > > > Hi all, I am new to puppet. I need a sample recipe to > >> > > write/copy a > >> > > > > > > > > > > shell file on puppet client. The shell file exists on > >> > > puppet server. > >> > > > > > > > > > > Once the file is written, I also want to execute it. I > >> have > >> > > tried > >> > > > > > > > > > > using file resource with ensure command to copy at > >> /etc but > >> > > > > > > permission > >> > > > > > > > > > > was denied and moreover with a different directory > >> path > >> > > (\tmp) it > >> > > > > > > just > >> > > > > > > > > > > created an empty file. Can anyone please help? > > >> > > > > > > > > > > Regards, > > >> > > > > > > > > > > A. > > >> > > > > > > > > > > -- > >> > > > > > > > > > > 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 (mailto:puppet-users@googlegroups.com) > >> > > > > > > (mailto: > >> > > > > > > > > > puppet-users@googlegroups.com (mailto: > >> > > puppet-users@googlegroups.com)). > >> > > > > > > > > > > To unsubscribe from this group, send email to > >> > > > > > > > > > puppet-users+unsubscr...@googlegroups.com (mailto: > >> > > puppet-users%2bunsubscr...@googlegroups.com) (mailto: > >> > > > > > > > > > puppet-users+unsubscr...@googlegroups.com (mailto: > >> > > puppet-users%2bunsubscr...@googlegroups.com)). > > ... > > read more » -- 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+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.