[chef-dev] Re: Any plan for CHEF-2627 (Knife SSH should return exit code based on whether or not ssh command is successful or not)


Chronological Thread 
  • From: Maciej Pasternacki < >
  • To: Jamie Winsor < >
  • Cc: AJ Christensen < >, Hui Hu < >,
  • Subject: [chef-dev] Re: Any plan for CHEF-2627 (Knife SSH should return exit code based on whether or not ssh command is successful or not)
  • Date: Fri, 4 May 2012 14:23:25 +0200
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=pasternacki.net; h=subject :mime-version:content-type:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; q=dns; s= pasternacki.net; b=fBe0/NWr5pFVHousbPE5/odU0GfiGNnP/joJpmgTBuNLX DWEbsmFrOsc05CdPaHuplkXpzFIL/VNoMmNFeH7P9/w4aLyS5us+SCTQ8F+iaf7a hDGm0zFy33zayydfHjM5QcXhDKjj7jd3VOi9s4Zwt1PZQ6du9LMHeN1QLzf8qw=

This feature (or, more precisely, fixing this bug where knife does not follow 
UNIX conventions) is as useful as 'knife ssh' command itself is.

If knife ssh command is useful in its own right, it is just a "search in chef 
server" layer over plain command-line SSH. My expectation then is that it 
behaves like ssh command, especially with regard to being used in scripts. 
SSH does relay remote command's exit status even though ssh connection itself 
has been successful and the command has been called correctly:

$ ssh ronja.3ofcoins.net false ; echo $?
1

As a consequence, this is behaviour I'd expect from any convenience layer 
over SSH.

Now if knife ssh is useless on its own and exists only for knife bootstrap 
and knife * server create (because using it as its own command is going into 
"SSH-as-a-framework" territory), then I'd also expect it to return failure 
when node bootstrap script failed on the remote site - non-zero exit status 
from bootstrap script *is* a failure.

Suggestion to contribute the patch is justified. I'm going to EOT here and 
start coding - this will be more productive.

-- Maciej

On May 2, 2012, at 21:32 , Jamie Winsor wrote:

> I don't see how this is a useless feature. Without writing any additional 
> code to scrub the output of Knife SSH or reading it yourself, how do you 
> know if 1 out of the 400 nodes you just sent a command to failed?
> 
> Command line tools should return with a status code which communicates to 
> the user if their intentions were successful or not, and if possible, why 
> (this is why we don't just have two exit codes - 0 or 1). As it is, Knife 
> SSH fails silently when commanding multiple nodes.
> 
> A non zero exit code with an output of nodes that did not execute their 
> commands successfully sounds like a very fair request and how I would 
> expect Knife SSH to behave.
> 
> Hui Hu - it shouldn't be a terribly difficult task to get this done. You 
> should sign the CLA and do the work if you want this ticket expedited. 
> 
> -- 
> Jamie Winsor
> @resetexistence
> https://github.com/reset
> 
> On Wednesday, May 2, 2012 at 2:51 AM, AJ Christensen wrote:
> 
>> The feature sounds so incredibly useless you may have to contribute it
>> yourself. Even then I'd be dubious about it being accepted apart from
>> solely as a bug fix.
>
>> You do not need an SSH-as-a-framework system.
>
>http://wiki.opscode.com/display/chef/How+to+Contribute
>
>> --AJ
>
>> On 2 May 2012 20:17, Maciej Pasternacki 
>> < >
>>  wrote:
>>> BIG +1 on this.
>>> 
>>> I'm using knife ssh to execute maintenance commands in parallel. 
>>> Diagnostic output is hard to miss when there are many machines. Knife 
>>> should at the very least exit a non-zero status, and optimally print at 
>>> the end of the session list of machines with non-zero exit status (and 
>>> the respective statuses).
>>> 
>>> -- M
>>> 
>>> On May 2, 2012, at 7:53 , Hui Hu wrote:
>>> 
>>>> Hello,
>>>> 
>>>> I've been using Chef for several months.
>>>> 
>>>> Are Chef developers going to fix this ticket 
>>>> http://tickets.opscode.com/browse/CHEF-2627 ;(Knife SSH should return 
>>>> exit code based on whether or not ssh command is successful or not) ?  I 
>>>> really want to know whether the command Chef::Knife::Bootstrap.run 
>>>> (which calls Chef::Knife::Ssh.run) is successful or not, so I can 
>>>> perform next step based on the result.
>>>> 
>>>> Thanks & Best Regards,
>>>> Hui Hu
> 




Archive powered by MHonArc 2.6.16.

§