2017-01-02 17 views
-1

私はルビーとシェフの初心者です。私はテンプレートリソースを介してファイルを作成しようとしていました。 chef-applyコマンドを実行した後、「NoMethodError:未定義メソッド `preferred_filename_on_disk_location 'for nil:NilClass」というエラーが表示されます。私はそれをGoogleにしようとしましたが、正しい解決策は見つかりませんでした。NoMethodError:未定義メソッド `preferred_filename_on_disk_location 'for nil:NilClass

助けてください。 (シェフ-適用料理):

レシピabc.rbシェフ-適用:(シェフ-適用レシピ) *テンプレート[file.txtなど]アクションが

================================================================================ 
Error executing action `create` on resource 'template[file.txt]' 
================================================================================ 

NoMethodError 
------------- 
undefined method `preferred_filename_on_disk_location' for nil:NilClass 

Resource Declaration: 
--------------------- 
# In abc.rb 

10: template "file.txt" do 
11:  source "file.erb" 
12:  mode "0666" 
13: end 
14: 

Compiled Resource: 

を作成中で宣言# abc.rb:10:3​​7:07から05:00 2017-01-02T18] FATAL: `

template("file.txt") do 
    action [:create] 
    retries 0 
    retry_delay 2 
    default_guard_interpreter :default 
    source "file.erb" 
    declared_type :template 
    cookbook_name "(chef-apply cookbook)" 
    recipe_name "(chef-apply recipe)" 
    mode "0666" 
    path "file.txt" 
end 

Platform: 
--------- 
x86_64-linux 

run_chef_recipe」にスタックトレースが を/var/chef/cache/chef-stacktrace.outにダンプ[2017-01-02T18:37:07-0 5:00]致命的:バグレポート [2017-01-02T18:37:07-05:00]を提出する場合は、stacktrace.outファイルの内容を入力してください。致命的:NoMethodError:template [file.txt]((シェフ-適用料理を)::(シェフ-適用レシピ)ライン10)は、エラーが発生しました:NoMethodError:nilのための未定義のメソッド `preferred_filename_on_disk_location」:chef-apply参照(適切にテンプレートリソースを実行することができないようにNilClass

+0

ようこそStackOverflow。質問の書式を修正してください。コードとエラーメッセージが適切にフォーマットされていると、助けがはるかに簡単になります。 –

+0

[ask]と[mcve]を参照してください –

答えて

0

は、それはそうですhttps://tickets.opscode.com/browse/CHEF-5317)。レシピを実行するためのより良い方法として、chef-soloを使用する必要があります。

コマンドはCONFIG_FILEはシェフ、例えばためのいくつかの構成が含ま

chef-solo -o 'recipe[COOKBOOK_NAME]' -c CONFIG_FILE 

あろう

current_dir = File.dirname(__FILE__) 

file_cache_path '/tmp/chef-cache' 
cookbook_path ["#{current_dir}/cookbooks"] 
data_bag_path "#{current_dir}/databags" 
ssl_verify_mode :verify_none 

あなたは、このファイルsolo.rbを呼び出すあなたは上記のシェフのコマンドを実行し、同じディレクトリに入れて、それが

chef-solo -o 'recipe[COOKBOOK_NAME]' -c solo.rb 

ようになりますあなたがしたい料理の名前とCOOKBOOK_NAMEを交換することができます実行するにはレシピを実行し、default.rbレシピを実行しない場合は、::recipe_nameを追加してください。

+1

OPのシェフの基本知識が不足しているように、https://learn.chef.ioへのリンクを追加する価値があります。 chef-applyを使ってレシピを1つのレシピからシェフに適用すると、シェフがゼロまたはソロになるのは簡単です。ローカルホストの設定だけを目的としたchef-applyを知っていれば簡単です – Tensibai

+0

chef-solo現在のバージョンでは正しいです。 – coderanger

関連する問題