2016-07-14 13 views
1

Nach Chef Development Kit Installation auf einem Knoten, bekam ich einen Fehler während der Bootstrap dieses Knotens:Chef - kann nicht konvertieren Chef :: Knoten :: VividMash zu String

Chef Development Kit Version: 0.15.16 
chef-client version: 12.11.18 
delivery version: master (444effdf9c81908795e88156c43b5f) 
berks version: 4.3.5 
kitchen version: 1.10.0 
Compiling Cookbooks... 
WARN: Chef::Provider::AptRepository already exists! Cannot create deprecation class for LWRP provider apt_repository from cookbook apt 
WARN: AptRepository already exists! Deprecation class overwrites Custom resource apt_repository from cookbook apt 
================================================================================ 
Recipe Compile Error in /var/chef/cache/cookbooks/base/recipes/default.rb ============================================================= 
TypeError 
can't convert Chef::Node::VividMash to String (Chef::Node::VividMash#to_str gives Chef::Node::VividMash) 
Cookbook Trace: 
/var/chef/cache/cookbooks/base/recipes/packages.rb:10:in `block in from_file' 
Relevant File Content: 
var/chef/cache/cookbooks/base/recipes/packages.rb: 
3: # Recipe:: app 

node['packages'].each do |name| 
    10>> package name do 
    11:  action :upgrade 
    12: end 
13: end 
    14: 
15: 

Running handlers: 
ERROR: Running exception handlers 
6 Running handlers complete 
ERROR: Exception handlers complete 
FATAL: Please provide the contents of the stacktrace.out file if you file a bug report 
ERROR: can't convert Chef::Node::VividMash to String (Chef::Node::VividMash#to_str gives Chef::Node::VividMash) 
FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1) 
[SSH] ERROR: Read from remote host : An existing connection was forcibly closed by the remote host. 

[SSH] FAIL: Write failed: An existing connection was forcibly closed by the remote host. 

Chef Server 11.

Mit Koch-Client 11 das Kochbuch laufen ohne Probleme

default[:packages] = %w(sysstat screen mlocate telnet nmap openssl vim) 

Irgendeine Idee, wie man es repariert?

Danke!

Antwort

0
%w[ sysstat screen mlocate telnet nmap openssl vim ].each do |pkg| 
    package pkg 
end 
0

Sie haben node['packages'] einen Hash anstelle eines Arrays gemacht. Sie wollen diesen Code statt:

node['packages'].each do |name, something| 
    package name do 
    action :upgrade 
    end 
end 

Sie sollten auch wahrscheinlich überprüfen, was die something in Ihrer Daten ist. Könnte nur ein boolescher sein, oder könnte eine Paketversion sein, hängt davon ab, wie Sie die Dinge anderswo einrichten.

+0

danke, ich werde versuchen, es zu beheben, wissen Sie, warum es mit Chef-Client 11 arbeitet? Was ist der Zweck von etwas? –

+0

Ich bearbeite meine Frage und fügte die Pakete hinzu –

+1

Ich würde einige Logging hinzufügen: 'Chef :: Log.debug (" name = # {name.inspect} "), um zu sehen, was der Wert in der Schleife ist. – coderanger