Strategies for updating chef trough a chef recipe


#1

Hi,

I’m trying to update all my chef-clients trough a chef recipe, I’m using a
modified recipe based on opscode’s chef cookbook,

What I’m trying to do is pretty simple:

I’m having problems on the first chef run, I use to login to the machine and
run chef-client as root, then the run hangs (chef does not get restarted)
and I get the following error:

[Mon, 20 Sep 2010 20:33:02 +0000] INFO: Installing gem_package[chef] version
0.9.8
[Mon, 20 Sep 2010 20:33:24 +0000] INFO: gem_package[chef] sending restart
action to service[chef-client] (immediate)
[Mon, 20 Sep 2010 20:33:24 +0000] FATAL: SIGTERM received, stopping
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Running exception handlers
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Exception handlers complete
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Re-raising exception: SystemExit -
exit

If I restart chef as delayed on the recipe I have the same problem but at
the end of the run.

I am looking some help on the debug or some (better) strategies on auto
updating chef through minor releases.

Thanks.

Jacobo García López de Araujo
blog: http://robotplaysguitar.com
http://workingwithrails.com/person/13395-jacobo-garc-a


#2

Hi Jacobo,

Theres already a chef restart recipe in my cookbooks repository. Its
been tested and works perfectly with chef-solo. For restarting
chef-client im unsure how to tackle that. But would very much like to
see such capability incorporated into the recipe.

On Tue, Sep 21, 2010 at 10:32 AM, Jacobo García jacobo.garcia@gmail.com wrote:

Hi,
I’m trying to update all my chef-clients trough a chef recipe, I’m using a
modified recipe based on opscode’s chef cookbook,
What I’m trying to do is pretty simple:
https://gist.github.com/2fd4fce806aa0c33edb0
I’m having problems on the first chef run, I use to login to the machine and
run chef-client as root, then the run hangs (chef does not get restarted)
and I get the following error:
[Mon, 20 Sep 2010 20:33:02 +0000] INFO: Installing gem_package[chef] version
0.9.8
[Mon, 20 Sep 2010 20:33:24 +0000] INFO: gem_package[chef] sending restart
action to service[chef-client] (immediate)
[Mon, 20 Sep 2010 20:33:24 +0000] FATAL: SIGTERM received, stopping
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Running exception handlers
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Exception handlers complete
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Re-raising exception: SystemExit -
exit
If I restart chef as delayed on the recipe I have the same problem but at
the end of the run.
I am looking some help on the debug or some (better) strategies on auto
updating chef through minor releases.
Thanks.
Jacobo García López de Araujo
blog: http://robotplaysguitar.com
http://workingwithrails.com/person/13395-jacobo-garc-a


#3

This is off the top of my head, but the most brute-force way possible
would be this:

ruby_block “replace me with a new process” do
block do
exec($0 + ARGV)
end
end

And make sure it is the last thing.

We use something like runit, so when the daemon exits, it restarts
automatically, and a resource like this isn’t required.

Adam

On Tue, Sep 21, 2010 at 2:32 AM, Jacobo García jacobo.garcia@gmail.com wrote:

Hi,
I’m trying to update all my chef-clients trough a chef recipe, I’m using a
modified recipe based on opscode’s chef cookbook,
What I’m trying to do is pretty simple:
https://gist.github.com/2fd4fce806aa0c33edb0
I’m having problems on the first chef run, I use to login to the machine and
run chef-client as root, then the run hangs (chef does not get restarted)
and I get the following error:
[Mon, 20 Sep 2010 20:33:02 +0000] INFO: Installing gem_package[chef] version
0.9.8
[Mon, 20 Sep 2010 20:33:24 +0000] INFO: gem_package[chef] sending restart
action to service[chef-client] (immediate)
[Mon, 20 Sep 2010 20:33:24 +0000] FATAL: SIGTERM received, stopping
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Running exception handlers
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Exception handlers complete
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Re-raising exception: SystemExit -
exit
If I restart chef as delayed on the recipe I have the same problem but at
the end of the run.
I am looking some help on the debug or some (better) strategies on auto
updating chef through minor releases.
Thanks.
Jacobo García López de Araujo
blog: http://robotplaysguitar.com
http://workingwithrails.com/person/13395-jacobo-garc-a


Opscode, Inc.
Adam Jacob, CTO
T: (206) 508-7449 E: adam@opscode.com


#4

Thanks for the answers, your help is quite appreciated.

I’m trying dreamcat4 restart recipe with just a little success.

I get this error:

/var/chef/cache/cookbooks/restart/libraries/restart.rb:54:in initialize': wrong number of arguments (3 for 2) (ArgumentError) from /var/chef/cache/cookbooks/restart/libraries/restart.rb:54:ininitialize’

I am just running:

restart “login_shell”

I’m using chef 0.9.0.

Jacobo García López de Araujo
blog: http://robotplaysguitar.com
http://workingwithrails.com/person/13395-jacobo-garc-a

On Tue, Sep 21, 2010 at 8:04 PM, Adam Jacob adam@opscode.com wrote:

This is off the top of my head, but the most brute-force way possible
would be this:

ruby_block “replace me with a new process” do
block do
exec($0 + ARGV)
end
end

And make sure it is the last thing.

We use something like runit, so when the daemon exits, it restarts
automatically, and a resource like this isn’t required.

Adam

On Tue, Sep 21, 2010 at 2:32 AM, Jacobo García jacobo.garcia@gmail.com
wrote:

Hi,
I’m trying to update all my chef-clients trough a chef recipe, I’m using
a
modified recipe based on opscode’s chef cookbook,
What I’m trying to do is pretty simple:
https://gist.github.com/2fd4fce806aa0c33edb0
I’m having problems on the first chef run, I use to login to the machine
and
run chef-client as root, then the run hangs (chef does not get restarted)
and I get the following error:
[Mon, 20 Sep 2010 20:33:02 +0000] INFO: Installing gem_package[chef]
version
0.9.8
[Mon, 20 Sep 2010 20:33:24 +0000] INFO: gem_package[chef] sending restart
action to service[chef-client] (immediate)
[Mon, 20 Sep 2010 20:33:24 +0000] FATAL: SIGTERM received, stopping
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Running exception handlers
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Exception handlers complete
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Re-raising exception: SystemExit

exit
If I restart chef as delayed on the recipe I have the same problem but at
the end of the run.
I am looking some help on the debug or some (better) strategies on auto
updating chef through minor releases.
Thanks.
Jacobo García López de Araujo
blog: http://robotplaysguitar.com
http://workingwithrails.com/person/13395-jacobo-garc-a


Opscode, Inc.
Adam Jacob, CTO
T: (206) 508-7449 E: adam@opscode.com


#5

if you are using the ‘init’ method the chef-client init.d script have
an error up to 0.9.10:
http://tickets.opscode.com/browse/CHEF-1584
-> will prevent the restart action of the chef-client service.

SIGTERM seems harsh though…

On Tue, Sep 21, 2010 at 3:22 PM, Jacobo García jacobo.garcia@gmail.com wrote:

Thanks for the answers, your help is quite appreciated.
I’m trying dreamcat4 restart recipe with just a little success.
I get this error:
/var/chef/cache/cookbooks/restart/libraries/restart.rb:54:in initialize': wrong number of arguments (3 for 2) (ArgumentError) from /var/chef/cache/cookbooks/restart/libraries/restart.rb:54:ininitialize’
I am just running:
restart "login_shell"
I’m using chef 0.9.0.
Jacobo García López de Araujo
blog: http://robotplaysguitar.com
http://workingwithrails.com/person/13395-jacobo-garc-a

On Tue, Sep 21, 2010 at 8:04 PM, Adam Jacob adam@opscode.com wrote:

This is off the top of my head, but the most brute-force way possible
would be this:

ruby_block “replace me with a new process” do
block do
exec($0 + ARGV)
end
end

And make sure it is the last thing.

We use something like runit, so when the daemon exits, it restarts
automatically, and a resource like this isn’t required.

Adam

On Tue, Sep 21, 2010 at 2:32 AM, Jacobo García jacobo.garcia@gmail.com
wrote:

Hi,
I’m trying to update all my chef-clients trough a chef recipe, I’m using
a
modified recipe based on opscode’s chef cookbook,
What I’m trying to do is pretty simple:
https://gist.github.com/2fd4fce806aa0c33edb0
I’m having problems on the first chef run, I use to login to the machine
and
run chef-client as root, then the run hangs (chef does not get
restarted)
and I get the following error:
[Mon, 20 Sep 2010 20:33:02 +0000] INFO: Installing gem_package[chef]
version
0.9.8
[Mon, 20 Sep 2010 20:33:24 +0000] INFO: gem_package[chef] sending
restart
action to service[chef-client] (immediate)
[Mon, 20 Sep 2010 20:33:24 +0000] FATAL: SIGTERM received, stopping
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Running exception handlers
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Exception handlers complete
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Re-raising exception:
SystemExit -
exit
If I restart chef as delayed on the recipe I have the same problem but
at
the end of the run.
I am looking some help on the debug or some (better) strategies on auto
updating chef through minor releases.
Thanks.
Jacobo García López de Araujo
blog: http://robotplaysguitar.com
http://workingwithrails.com/person/13395-jacobo-garc-a


Opscode, Inc.
Adam Jacob, CTO
T: (206) 508-7449 E: adam@opscode.com


#6

Hi Jacobo
Near where that line is referenced, change it to this:

  # def initialize(name, collection=nil, node=nil)
  #   super(name, collection, node)
  def initialize(name, run_context=nil)
    super(name, run_context)
    @resource_name = :restart
    @context = name || "node"
    @shell   = nil

And should run. Heres the command I used:

$ chef-solo -c /srv/chef/site-cookbooks/restart/files/default/solo.rb
-j /srv/chef/site-cookbooks/restart/files/default/example.json

as Scotty might say: T’was a mighty core change in the arguments of
the base class resource initializer function that broke it.

Commit:

On Tue, Sep 21, 2010 at 11:22 PM, Jacobo García jacobo.garcia@gmail.com wrote:

Thanks for the answers, your help is quite appreciated.
I’m trying dreamcat4 restart recipe with just a little success.
I get this error:
/var/chef/cache/cookbooks/restart/libraries/restart.rb:54:in initialize': wrong number of arguments (3 for 2) (ArgumentError) from /var/chef/cache/cookbooks/restart/libraries/restart.rb:54:ininitialize’
I am just running:
restart "login_shell"
I’m using chef 0.9.0.
Jacobo García López de Araujo
blog: http://robotplaysguitar.com
http://workingwithrails.com/person/13395-jacobo-garc-a

On Tue, Sep 21, 2010 at 8:04 PM, Adam Jacob adam@opscode.com wrote:

This is off the top of my head, but the most brute-force way possible
would be this:

ruby_block “replace me with a new process” do
block do
exec($0 + ARGV)
end
end

And make sure it is the last thing.

We use something like runit, so when the daemon exits, it restarts
automatically, and a resource like this isn’t required.

Adam

On Tue, Sep 21, 2010 at 2:32 AM, Jacobo García jacobo.garcia@gmail.com
wrote:

Hi,
I’m trying to update all my chef-clients trough a chef recipe, I’m using
a
modified recipe based on opscode’s chef cookbook,
What I’m trying to do is pretty simple:
https://gist.github.com/2fd4fce806aa0c33edb0
I’m having problems on the first chef run, I use to login to the machine
and
run chef-client as root, then the run hangs (chef does not get
restarted)
and I get the following error:
[Mon, 20 Sep 2010 20:33:02 +0000] INFO: Installing gem_package[chef]
version
0.9.8
[Mon, 20 Sep 2010 20:33:24 +0000] INFO: gem_package[chef] sending
restart
action to service[chef-client] (immediate)
[Mon, 20 Sep 2010 20:33:24 +0000] FATAL: SIGTERM received, stopping
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Running exception handlers
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Exception handlers complete
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Re-raising exception:
SystemExit -
exit
If I restart chef as delayed on the recipe I have the same problem but
at
the end of the run.
I am looking some help on the debug or some (better) strategies on auto
updating chef through minor releases.
Thanks.
Jacobo García López de Araujo
blog: http://robotplaysguitar.com
http://workingwithrails.com/person/13395-jacobo-garc-a


Opscode, Inc.
Adam Jacob, CTO
T: (206) 508-7449 E: adam@opscode.com


#7

Hi,

After that subtle change, its at least, partially working. I’ll update the
thread if I find anything interesting.

Thanks!

Jacobo García López de Araujo
blog: http://robotplaysguitar.com
http://workingwithrails.com/person/13395-jacobo-garc-a

On Wed, Sep 22, 2010 at 4:30 PM, Dreamcat4 dreamcat4@gmail.com wrote:

Hi Jacobo
Near where that line is referenced, change it to this:

 # def initialize(name, collection=nil, node=nil)
 #   super(name, collection, node)
 def initialize(name, run_context=nil)
   super(name, run_context)
   @resource_name = :restart
   @context = name || "node"
   @shell   = nil

And should run. Heres the command I used:

$ chef-solo -c /srv/chef/site-cookbooks/restart/files/default/solo.rb
-j /srv/chef/site-cookbooks/restart/files/default/example.json

as Scotty might say: T’was a mighty core change in the arguments of
the base class resource initializer function that broke it.

Commit:

http://github.com/opscode/chef/commit/8403e879048cf5122b36637f0ec28ca7be8392ff#L0L38

On Tue, Sep 21, 2010 at 11:22 PM, Jacobo García jacobo.garcia@gmail.com
wrote:

Thanks for the answers, your help is quite appreciated.
I’m trying dreamcat4 restart recipe with just a little success.
I get this error:
/var/chef/cache/cookbooks/restart/libraries/restart.rb:54:in
initialize': wrong number of arguments (3 for 2) (ArgumentError) from /var/chef/cache/cookbooks/restart/libraries/restart.rb:54:ininitialize’
I am just running:
restart "login_shell"
I’m using chef 0.9.0.
Jacobo García López de Araujo
blog: http://robotplaysguitar.com
http://workingwithrails.com/person/13395-jacobo-garc-a

On Tue, Sep 21, 2010 at 8:04 PM, Adam Jacob adam@opscode.com wrote:

This is off the top of my head, but the most brute-force way possible
would be this:

ruby_block “replace me with a new process” do
block do
exec($0 + ARGV)
end
end

And make sure it is the last thing.

We use something like runit, so when the daemon exits, it restarts
automatically, and a resource like this isn’t required.

Adam

On Tue, Sep 21, 2010 at 2:32 AM, Jacobo García <jacobo.garcia@gmail.com

wrote:

Hi,
I’m trying to update all my chef-clients trough a chef recipe, I’m
using

a
modified recipe based on opscode’s chef cookbook,
What I’m trying to do is pretty simple:
https://gist.github.com/2fd4fce806aa0c33edb0
I’m having problems on the first chef run, I use to login to the
machine

and
run chef-client as root, then the run hangs (chef does not get
restarted)
and I get the following error:
[Mon, 20 Sep 2010 20:33:02 +0000] INFO: Installing gem_package[chef]
version
0.9.8
[Mon, 20 Sep 2010 20:33:24 +0000] INFO: gem_package[chef] sending
restart
action to service[chef-client] (immediate)
[Mon, 20 Sep 2010 20:33:24 +0000] FATAL: SIGTERM received, stopping
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Running exception handlers
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Exception handlers complete
[Mon, 20 Sep 2010 20:33:24 +0000] ERROR: Re-raising exception:
SystemExit -
exit
If I restart chef as delayed on the recipe I have the same problem but
at
the end of the run.
I am looking some help on the debug or some (better) strategies on
auto

updating chef through minor releases.
Thanks.
Jacobo García López de Araujo
blog: http://robotplaysguitar.com
http://workingwithrails.com/person/13395-jacobo-garc-a


Opscode, Inc.
Adam Jacob, CTO
T: (206) 508-7449 E: adam@opscode.com