On Dec 10, 2010, at 2:34 AM, luke.bigum wrote:

> Thanks for the suggestion Patrick, it led me to the cause of the
> problem :)
> 
> I wrote a very simple local test manifest to emulate the Exec problem
> with 'puppet apply' and it still occurred. Out of pure habit, I often
> execute 'ls -l' when I switch between terminals (so I know where I am)
> and noticed that in /root on the server in question there was an empty
> file called 'grep'... Removing this stray file and puppet now runs
> fine :)
> 
> It seems that something to do with Ruby's FileTest module is
> searching ./ before the specified Path in the exec resource, thus
> finding a non executable 'grep' in CWD and complaining that it's not
> executable. The touching of exec.rb was a red herring as I was
> changing into the Ruby lib directory before hand :)
> 
> This doesn't appear to affect the actual execution of commands, so
> don't be worried about the wrong commands being executed based on the
> CWD of Puppet.

Except it might be.  Puppet might have been trying to execute the file and then 
failing because the permissions were 644 instead of 755.

> I've raised a bug for this: http://projects.puppetlabs.com/issues/5495
> 
> On Dec 9, 6:17 pm, Patrick <[email protected]> wrote:
>> On Dec 9, 2010, at 9:14 AM, luke.bigum wrote:
>> 
>>> Interesting, I've noticed that puppet runs triggered from a daemonised
>>> puppetd aren't affected by the problem (as Dashboard and /var/log/
>>> messages says their is no errors), but when run from the command line
>>> as puppetd --test it fails as usual for me:
>> 
>>> err: /Stage[main]/Fh_freetds/Exec[change /etc/freetds.conf version]:
>>> Could not evaluate: 'grep' is not executable
>> 
>>> Can't spot any difference in the environments so far.
>> 
>> Here's something to try, can you reproduce this problem using the local 
>> "puppet" program that directly evaluates the manifest.  Not the client 
>> "puppetd".  If so, that's a lot less code you've narrowed to down to.
>> 
>>> On Dec 9, 4:42 pm, "luke.bigum" <[email protected]> wrote:
>>>> Hi Rudy,
>> 
>>>> I'm not sure if you fixed this yet, but I ran into the same problem
>>>> using grep in an unless parameter of an exec resource.
>> 
>>>> I went looking through the Ruby code, in /usr/lib/ruby/site_ruby/1.8/
>>>> puppet/type/exec.rb on line 571. I changed these four lines:
>> 
>>>>       unless FileTest.executable?(exe)
>>>>         raise ArgumentError,
>>>>           "'#{exe}' is not executable"
>>>>       end
>> 
>>>> To just a single line like the one above:
>> 
>>>>       raise ArgumentError, "'#{exe}' is not executable" unless
>>>> FileTest.executable?(exe)
>> 
>>>> And then Puppet stopped complaining. I thought this doesn't make any
>>>> sense at all, so I changed it back... Puppet still worked. I removed
>>>> and reinstalled the RPM, Puppet is back to complaining about grep not
>>>> being executable. I then just touched exec.rb and the problem is
>>>> magically fixed again.
>> 
>>>> I don't know very much about Ruby, so I'm just going to back away
>>>> very, very slowly, arms raised in the air to ward off evil ;)
>> 
>>>> But seriously, is there a Ruby guru who might know what's going on
>>>> here? I can even reproduce the issue by uninstalling and reinstalling
>>>> the puppet RPM - not sure how long it's going to stay broken though,
>>>> we'll see.
>> 
>>>> -Luke
>> 
>>>> On Dec 2, 10:30 am, Rudy Gevaert <[email protected]> wrote:
>> 
>>>>> Hi
>> 
>>>>> I'm seeing a strange thing here.  I only have this on one machine!  3
>>>>> others that are 'identical' don't have that issue...
>> 
>>>>> err: /Stage[main]/Vim/Exec[update-alternatives --set editor /usr/bin/
>>>>> vim.basic]: Could not evaluate: 'test' is not executable
>> 
>>>>> class vim{
>> 
>>>>>   $vim_package= "vim"
>> 
>>>>>   package {
>>>>>     $vim_package:
>>>>>       ensure => installed,
>>>>>       provider => $operatingsystem ? {
>>>>>         "Solaris" => 'pkgutil',
>>>>>         default => undef
>>>>>       }
>>>>>   }
>> 
>>>>>   case $operatingsystem{
>>>>>     "Debian": {
>>>>>       exec { "update-alternatives --set editor /usr/bin/vim.basic":
>>>>>         path => "/bin:/sbin:/usr/bin:/usr/sbin",
>>>>>         unless => "test /etc/alternatives/editor -ef /usr/bin/
>>>>> vim.basic"
>>>>>       }
>>>>>     }
>>>>>   }
>> 
>>>>> }
>> 
>>>>> Manual output:
>> 
>>>>> r...@cyrprd1:~# puppet agent --test
>>>>> info: Retrieving plugin
>>>>> info: Loading facts in ugentinfo
>>>>> info: Loading facts in configured_ntp_servers
>>>>> info: Loading facts in ugentinfo
>>>>> info: Loading facts in configured_ntp_servers
>>>>> info: Caching catalog for cyrprd1.ugent.be
>>>>> info: Applying configuration version '1291285388'
>>>>> notice: /Stage[main]/Debian_os/Exec[apt-get-update]/returns: executed
>>>>> successfully
>>>>> notice: /Stage[main]/Mailstore/Package[cyrus-ugent]/ensure: ensure
>>>>> changed '0.1-33' to '0.1-34'
>>>>> err: /Stage[main]/Vim/Exec[update-alternatives --set editor /usr/bin/
>>>>> vim.basic]: Could not evaluate: 'test' is not executable
>>>>> notice: Finished catalog run in 7.66 seconds
>> 
>>>>> r...@cyrprd1:~# test /etc/alternatives/editor -ef /usr/bin/vim.basic
>>>>> r...@cyrprd1:~# which test
>>>>> /usr/bin/test
>>>>> r...@cyrprd1:~# ls -l /usr/bin/test
>>>>> -rwxr-xr-x 1 root root 30136 Apr 28  2010 /usr/bin/test
>>>>> r...@cyrprd1:~#
>> 
>>> --
>>> You received this message because you are subscribed to the Google Groups 
>>> "Puppet Users" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to 
>>> [email protected].
>>> For more options, visit this group 
>>> athttp://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 [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> 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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to