2017-01-24 3 views
0

prodではないテストでの別の不満足な問題。シェフ:定義されていないノード属性またはメソッド ``ノード上の `<< '

コードは質問でノード属性に文字列を追加します。以下のために(私が主題で見つけ

NoMethodError 
------------- 
Undefined node attribute or method `<<' on `node'. To set an attribute, use `<<=value' instead. 

Cookbook Trace: 
--------------- 
    /var/chef/cache/cookbooks/tom-users/recipes/reboot_bot.rb:22:in `from_file' 
    /var/chef/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/run_context.rb:347:in `load_recipe' 
    /var/chef/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/run_context.rb:303:in `block in include_recipe' 
    /var/chef/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/run_context.rb:302:in `each' 
    /var/chef/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/run_context.rb:302:in `include_recipe' 
    /var/chef/cache/cookbooks/tom-security-patches/recipes/default.rb:8:in `from_file' 
    /var/chef/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/run_context.rb:347:in `load_recipe' 

Relevant File Content: 
---------------------- 
/var/chef/cache/cookbooks/tom-users/recipes/reboot_bot.rb: 

15:  '/sbin/reboot' 
16: ] 
17: end 
18: 
19: # allow 'bots' to ssh log in 
20: if node['tom-ssh']['allow_groups'] 
21: if !node['tom-ssh']['allow_groups'].include?("bots") 
22>>  node.normal['tom-ssh']['allow_groups'] << "bots" 
23: end 
24: else 
25:  node.normal['tom-ssh']['allow_groups'] = ["bots"] 
26: end 
27: 

質問:テストキッチンで働く上で述べたように

if node['tom-ssh']['allow_groups'] 
    if !node['tom-ssh']['allow_groups'].include?("bots") 
    node.normal['tom-ssh']['allow_groups'] << "bots" 
    end 
else 
    node.normal['tom-ssh']['allow_groups'] = ["bots"] 
end 

はこの、生産のシェフ・シェルが、PRODでレシピを実行するには、以下をスローします例Chef: Undefined node attribute or method `<<' on `node' when trying to add)は、nodeオブジェクトで優先順位を使用していないことを示していますが、リンクに表示されているものとはまったく異なるものです。

私はここで何か迷っているかもしれませんが、以前は働きましたが、まだキッチンで働いています。それはchef-zeroで複製しない、何らかの種類の奇妙なコンパイルの問題かもしれませんか?私はあなたが欲しいロジックは、おそらく何をする必要があるかより、この

node.normal['tom-ssh']['allow_groups'] ||= [] 
node.normal['tom-ssh']['allow_groups'] |= %w{bots} 
+0

どのシェフのバージョンを使用していますか? – coderanger

+0

最新(12.17.44)私は他のバージョンにダウングレードしようとしましたが、結果は同じです –

答えて

0

は次のとおりです。

node.normal [ 'トム-のssh'] [ 'allow_groups'] = DeepMerge .merge(node.normal ['tom-ssh'] ['allow_groups']。to_hash、["bots"]。to_hash)

+0

は動作していないようです。NoMethodError:定義されていないノードの属性またはメソッド '| '{0} {0} {0} {0} {0}ノード上で属性を設定するには、代わりに '| = value 'を使用します。 –

1

のようなものであると考え

関連する問題