Re: [Puppet Users] Puppet recipe to copy and execute a shell file
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]/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]: Dependency file[/tmp/QoS/QoS.sh] has 1 failures warning: //Exec[/tmp/QoS/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; 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 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). To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com (mailto: 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. -- 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.
Re: [Puppet Users] Puppet recipe to copy and execute a shell file
I apologize for posting wrong log messages, here is the correct log: notice: Starting catalog run notice: //File[/tmp/QoS/QoS.sh]/ensure: created err: //Exec[/tmp/QoS/QoS.sh]/returns: change from notrun to 0 failed: /tmp/QoS/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 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]/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]: Dependency file[/tmp/QoS/QoS.sh] has 1 failures warning: //Exec[/tmp/QoS/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; 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.comwrote: 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). To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com (mailto: 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. -- 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.
Re: [Puppet Users] Re: Puppet recipe to copy and execute a shell file
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 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 wrote: I apologize for posting wrong log messages, here is the correct log: notice: Starting catalog run notice: //File[/tmp/QoS/QoS.sh]/ensure: created err: //Exec[/tmp/QoS/QoS.sh]/returns: change from notrun to 0 failed: /tmp/QoS/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 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]/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]: Dependency file[/tmp/QoS/QoS.sh] has 1 failures warning: //Exec[/tmp/QoS/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; 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 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). To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com (mailto: 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. -- 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.
Re: [Puppet Users] Re: Puppet recipe to copy and execute a shell file
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 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 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 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 wrote: I apologize for posting wrong log messages, here is the correct log: notice: Starting catalog run notice: //File[/tmp/QoS/QoS.sh]/ensure: created err: //Exec[/tmp/QoS/QoS.sh]/returns: change from notrun to 0 failed: /tmp/QoS/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 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]/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]: Dependency file[/tmp/QoS/QoS.sh] has 1 failures warning: //Exec[/tmp/QoS/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; 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 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). To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com (mailto: puppet-users+unsubscr...@googlegroups.com). For more options, visit this group at http
Re: [Puppet Users] Re: Puppet recipe to copy and execute a shell file
iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p udp --sport 2727 -j TOS --set-tos 0x48 iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p udp --sport 2727 -j RETURN iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p udp --dport 2727 -j TOS --set-tos 0x48 iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p udp --dport 2727 -j RETURN iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --sport http -j TOS --set-tos 0x68 iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --sport http -j RETURN iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --dport http -j TOS --set-tos 0x68 iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --dport http -j RETURN iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --sport https -j TOS --set-tos 0x68 iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --sport https -j RETURN iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --dport https -j TOS --set-tos 0x68 iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --dport https -j RETURN iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --sport ftp -j TOS --set-tos 0x88 iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --sport ftp -j RETURN iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --dport ftp -j TOS --set-tos 0x88 iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --dport ftp -j RETURN iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --dport ftp-data -j TOS --set-tos 0x88 iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --dport ftp-data -j RETURN iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --sport ftp-data -j TOS --set-tos 0x88 iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p tcp --sport ftp-data -j RETURN iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -j TOS --set-tos 0x88 iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -j RETURN #save iptables rules iptables-save On Fri, Jun 17, 2011 at 3:44 PM, Annie Rana annier...@gmail.com 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 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 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 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 wrote: I apologize for posting wrong log messages, here is the correct log: notice: Starting catalog run notice: //File[/tmp/QoS/QoS.sh]/ensure: created err: //Exec[/tmp/QoS/QoS.sh]/returns: change from notrun to 0 failed: /tmp/QoS/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 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]/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]: Dependency file[/tmp/QoS/QoS.sh] has 1 failures warning: //Exec[/tmp/QoS/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; echo $?' , it worked fine printing 0 at the end. Any help what is wrong
Re: [Puppet Users] Re: Puppet recipe to copy and execute a shell file
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
Re: [Puppet Users] Re: Puppet recipe to copy and execute a shell file
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 21 RET=$? print Command $CMD returned $RET /tmp/QoS.out 21 CMD=iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p udp --sport 2345 -j TOS --set-tos 0x28 OUT=$($CMD) /tmp/QoS.out 21 RET=$? print Command $CMD returned $RET /tmp/QoS.out 21 CMD=iptables-save OUT=$($CMD) /tmp/QoS.out 21 RET=$? print Command $CMD returned $RET /tmp/QoS.out 21 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
Re: [Puppet Users] Re: Puppet recipe to copy and execute a shell file
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 21 RET=$? print Command $CMD returned $RET /tmp/QoS.out 21 CMD=iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p udp --sport 2345 -j TOS --set-tos 0x28 OUT=$($CMD) /tmp/QoS.out 21 RET=$? print Command $CMD returned $RET /tmp/QoS.out 21 CMD=iptables-save OUT=$($CMD) /tmp/QoS.out 21 RET=$? print Command $CMD returned $RET /tmp/QoS.out 21 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
Re: [Puppet Users] Re: Puppet recipe to copy and execute a shell file
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 21 /tmp/QoS.out echo Command '$CMD' output '$OUT' 21 /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 21 /tmp/QoS.out echo Command '$CMD' output '$OUT' 21 /tmp/QoS.out CMD=iptables-save OUT=$($CMD) RET=$? echo Command '$CMD' returned $RET 21 /tmp/QoS.out echo Command '$CMD' output '$OUT' 21 /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 21 RET=$? print Command $CMD returned $RET /tmp/QoS.out 21 CMD=iptables -t mangle -A FORWARD -i ${LAN} -o ${WAN} -p udp --sport 2345 -j TOS --set-tos 0x28 OUT
Re: [Puppet Users] Re: Puppet recipe to copy and execute a shell file
Thanks much Nathan, it worked like a charm. :) Thank you Peter and Luke; keep up the good work. Regards, A. On Fri, Jun 17, 2011 at 6:50 PM, Nathan Clemons nat...@livemocha.comwrote: You want: file { blah: ... } exec {blah2: ... require = File['blah'] } That way you ensure the file is created before you try to run the exec. -- Nathan Clemons http://www.livemocha.com The worlds largest online language learning community On Fri, Jun 17, 2011 at 10:43 AM, Annie Rana annier...@gmail.com wrote: 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 21 /tmp/QoS.out echo Command '$CMD' output '$OUT' 21 /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 21 /tmp/QoS.out echo Command '$CMD' output '$OUT' 21 /tmp/QoS.out CMD=iptables-save OUT=$($CMD) RET=$? echo Command '$CMD' returned $RET 21 /tmp/QoS.out echo Command '$CMD' output '$OUT' 21 /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