Hi,

Thanks much for help. Some how I managed to execute the original shell
script using command in exec "command=>'sh /tmp/QoS/QoS.sh'" and I used path
parameter as well "path=>'/sbin:/sbin/ipatbles:/bin:/usr/bin'" but I have to
run file and exec recipes separately one after another otherwise exec is
executed first if both are placed in one recipe and causing file not found
error. Is there any way to define the sequence of execution?

Regards,

Annie

On Fri, Jun 17, 2011 at 4:50 PM, Luke Bigum <luke.bi...@lmax.com> wrote:

> 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.
>
>

-- 
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.

Reply via email to