[chef] Re: Template's "cookbook" attribute being ignored


Chronological Thread 
  • From: Jonathan Matthews < >
  • To: chef < >
  • Subject: [chef] Re: Template's "cookbook" attribute being ignored
  • Date: Tue, 5 Apr 2011 15:56:32 +0100
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=jpluscplusm.com; s=google; h=mime-version:sender:x-originating-ip:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:content-type :content-transfer-encoding; b=FcN/oK2O1u+766aZoypVmN9wLBB3vvP9LgIJfToxQHZC1u/STmnTzoXDwHK3J5lnYS ztzIx/ZxQtfD22bJXaUzD0uPsvplgdfOezuNTfyDR483AH/iQV+4judiqNGbWjb8qWRL meYQV5V7J7c5GcB+TL4Sz6UFJA6SDGMPoIeqM=

On 4 April 2011 21:55, Jonathan Matthews 
< >
 wrote:
> I'm running 0.9.12 on Ubuntu Lucid (server) and Debian Squeeze (client).

Correction: 0.9.14 on the Debian client.

> The debug logs show the following, regardless of which line (above) is
> commented and which is active. Both show the client "looking for
> template etc-default-tftpd-hpa.erb in cookbook "filesystem"", which is
> where the code is *defined*:
>
> [Mon, 04 Apr 2011 21:42:29 +0100] DEBUG: FS:TMPL: path      ==
> /etc/default/tftpd-hpa
> [Mon, 04 Apr 2011 21:42:29 +0100] DEBUG: Processing log[FS:TMPL:
> cookbook  == templates] on boot00
> [Mon, 04 Apr 2011 21:42:29 +0100] DEBUG: FS:TMPL: cookbook  == templates
> [Mon, 04 Apr 2011 21:42:29 +0100] DEBUG: Processing
> template[tftpd-hpa_defaults] on boot00.nix.sys.7digital.net
> [Mon, 04 Apr 2011 21:42:29 +0100] DEBUG: looking for template
> etc-default-tftpd-hpa.erb in cookbook "filesystem"

I think this last line is a *lie*. It comes from
https://github.com/opscode/chef/blob/master/chef/lib/chef/provider/template.rb#L63
and is directly contradicted by the contents of "cookbook" at
https://github.com/opscode/chef/blob/master/chef/lib/chef/provider/template.rb#L68.
Popping a debug log in between L68/69, I can see that "cookbook"
contains the correct setting from the recipe/resource interaction.

I'm still not sure why I'm seeing an error here. Here's the error
(which I hadn't included before, so as not to muddy the waters). I
wonder if some other code, elsewhere, is also making the mistake of
not properly finding out which cookbook the template is in? (the log
line "decided template etc-default-tftpd-hpa.erb is in cookbook
templates" is my local debug addition to template.rb#L68.5, as
described above).

<pre>
[Tue, 05 Apr 2011 15:06:59 +0100] DEBUG: FS:TMPL: path      ==
/etc/default/tftpd-hpa
[Tue, 05 Apr 2011 15:06:59 +0100] DEBUG: Processing log[FS:TMPL:
cookbook  == templates] on boot00
[Tue, 05 Apr 2011 15:06:59 +0100] DEBUG: FS:TMPL: cookbook  == templates
[Tue, 05 Apr 2011 15:06:59 +0100] DEBUG: Processing
template[tftpd-hpa_defaults] on boot00
[Tue, 05 Apr 2011 15:06:59 +0100] DEBUG: looking for template
etc-default-tftpd-hpa.erb in cookbook "filesystem"
[Tue, 05 Apr 2011 15:06:59 +0100] DEBUG: decided template
etc-default-tftpd-hpa.erb is in cookbook templates
[Tue, 05 Apr 2011 15:06:59 +0100] DEBUG: Not storing
cookbooks/templates/templates/default/etc-default-tftpd-hpa.erb, as
the cache is up to date.
[Tue, 05 Apr 2011 15:06:59 +0100] ERROR: Running exception handlers
[Tue, 05 Apr 2011 15:06:59 +0100] ERROR: Exception handlers complete
[Tue, 05 Apr 2011 15:06:59 +0100] DEBUG: Re-raising exception:
NoMethodError - undefined method `-' for nil:NilClass
/usr/lib/ruby/1.8/chef/mixin/template.rb:74:in `source_listing'
  /usr/lib/ruby/1.8/chef/mixin/template.rb:90:in `to_s'
  /usr/lib/ruby/1.8/chef/runner.rb:91:in `converge'
  /usr/lib/ruby/1.8/chef/resource_collection.rb:94
  /usr/lib/ruby/1.8/chef/resource_collection/stepable_iterator.rb:116:in 
`call'
  /usr/lib/ruby/1.8/chef/resource_collection/stepable_iterator.rb:116:in
`call_iterator_block'
  /usr/lib/ruby/1.8/chef/resource_collection/stepable_iterator.rb:85:in `step'
  /usr/lib/ruby/1.8/chef/resource_collection/stepable_iterator.rb:104:in
`iterate'
  /usr/lib/ruby/1.8/chef/resource_collection/stepable_iterator.rb:55:in
`each_with_index'
  /usr/lib/ruby/1.8/chef/resource_collection.rb:92:in `execute_each_resource'
  /usr/lib/ruby/1.8/chef/runner.rb:84:in `converge'
  /usr/lib/ruby/1.8/chef/client.rb:268:in `converge'
  /usr/lib/ruby/1.8/chef/client.rb:171:in `run'
  /usr/lib/ruby/1.8/chef/application/client.rb:222:in `run_application'
  /usr/lib/ruby/1.8/chef/application/client.rb:212:in `loop'
  /usr/lib/ruby/1.8/chef/application/client.rb:212:in `run_application'
  /usr/lib/ruby/1.8/chef/application.rb:62:in `run'
  /usr/bin/chef-client:26
</pre>

FWIW, this error occurs both when the erb file is empty and when it's
a static text file. I believe I've seen this error in the past when
the client can't get the template, but here's the error occurring
during a run started just after I've changed the template contents
(hence the client has to pull down the new contents, but *only* if it
identifies the cookbook containing the template correctly; which it
does):

<pre>
[Tue, 05 Apr 2011 15:12:44 +0100] DEBUG: Processing
template[tftpd-hpa_defaults] on boot00
[Tue, 05 Apr 2011 15:12:44 +0100] DEBUG: looking for template
etc-default-tftpd-hpa.erb in cookbook "filesystem"
[Tue, 05 Apr 2011 15:12:44 +0100] DEBUG: decided template
etc-default-tftpd-hpa.erb is in cookbook templates
[Tue, 05 Apr 2011 15:12:44 +0100] DEBUG: Signing the request as boot00
[Tue, 05 Apr 2011 15:12:44 +0100] DEBUG: String to sign: 'Method:GET
Hashed Path:XXXXXXXXXX
X-Ops-Content-Hash:XXXXXXX
X-Ops-Timestamp:2011-04-05T14:12:44Z
X-Ops-UserId:boot00
Header hash: {"X-Ops-Content-Hash"=>"", "X-Ops-Authorization-1"=>"",
"X-Ops-Userid"=>"boot00", "X-Ops-Sign"=>"version=1.0",
"X-Ops-Authorization-2"=>"", "X-Ops-Authorization-3"=>"",
"X-Ops-Authorization-4"=>"", "X-Ops-Authorization-5"=>"",
"X-Ops-Authorization-6"=>"",
"X-Ops-Timestamp"=>"2011-04-05T14:12:44Z"}
[Tue, 05 Apr 2011 15:12:44 +0100] DEBUG: Sending HTTP Request via GET
to chef:443/cookbooks/templates/0.0.1/files/be74256428038a92c7e3dafd2bb2bee3
[Tue, 05 Apr 2011 15:12:45 +0100] DEBUG: Streaming download from
https://chef/cookbooks/templates/0.0.1/files/be74256428038a92c7e3dafd2bb2bee3
to tempfile /tmp/chef-rest20110405-7042-1wyfuqb-0
[Tue, 05 Apr 2011 15:12:45 +0100] INFO: Storing updated
cookbooks/templates/templates/default/etc-default-tftpd-hpa.erb in the
cache.
[Tue, 05 Apr 2011 15:12:45 +0100] ERROR: Running exception handlers
[Tue, 05 Apr 2011 15:12:45 +0100] ERROR: Exception handlers complete
[Tue, 05 Apr 2011 15:12:45 +0100] DEBUG: Re-raising exception:
NoMethodError - undefined method `-' for nil:NilClass
/usr/lib/ruby/1.8/chef/mixin/template.rb:74:in `source_listing'
  /usr/lib/ruby/1.8/chef/mixin/template.rb:90:in `to_s'
  /usr/lib/ruby/1.8/chef/runner.rb:91:in `converge'
  /usr/lib/ruby/1.8/chef/resource_collection.rb:94
  /usr/lib/ruby/1.8/chef/resource_collection/stepable_iterator.rb:116:in 
`call'
  /usr/lib/ruby/1.8/chef/resource_collection/stepable_iterator.rb:116:in
`call_iterator_block'
  /usr/lib/ruby/1.8/chef/resource_collection/stepable_iterator.rb:85:in `step'
  /usr/lib/ruby/1.8/chef/resource_collection/stepable_iterator.rb:104:in
`iterate'
  /usr/lib/ruby/1.8/chef/resource_collection/stepable_iterator.rb:55:in
`each_with_index'
  /usr/lib/ruby/1.8/chef/resource_collection.rb:92:in `execute_each_resource'
  /usr/lib/ruby/1.8/chef/runner.rb:84:in `converge'
  /usr/lib/ruby/1.8/chef/client.rb:268:in `converge'
  /usr/lib/ruby/1.8/chef/client.rb:171:in `run'
  /usr/lib/ruby/1.8/chef/application/client.rb:222:in `run_application'
  /usr/lib/ruby/1.8/chef/application/client.rb:212:in `loop'
  /usr/lib/ruby/1.8/chef/application/client.rb:212:in `run_application'
  /usr/lib/ruby/1.8/chef/application.rb:62:in `run'
  /usr/bin/chef-client:26
</pre>


-- 
Jonathan Matthews
London, UK
http://www.jpluscplusm.com/contact.html



Archive powered by MHonArc 2.6.16.

§