我是红宝石和厨师的新手。我试图通过模板资源创建一个文件。运行chef-apply命令后,我收到一些错误" NoMethodError:未定义的方法`preferred_filename_on_disk_location'为零:NilClass" 。我试图谷歌,但没有找到正确的解决方案。
请帮忙。
食谱:(厨师应用食谱)::(厨师应用食谱) * template [file.txt] action create
================================================================================
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:在`run_chef_recipe'
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
[2017-01-02T18:37:07-05:00]致命:Stacktrace转储到/var/chef/cache/chef-stacktrace.out [2017-01-02T18:37:07-05:00]致命:如果您提交错误报告,请提供stacktrace.out文件的内容 [2017-01-02T18:37:07-05:00]致命:NoMethodError:template [file.txt]((chef-apply cookbook)::( chef-apply recipe)第10行出现错误:NoMethodError:undefined方法`preferred_filename_on_disk_location'为零:NilClass
答案 0 :(得分:0)
似乎chef-apply
无法正确运行模板资源(请参阅https://tickets.opscode.com/browse/CHEF-5317)。作为运行食谱的更好方法,您应该使用chef-solo
。
命令是
chef-solo -o 'recipe[COOKBOOK_NAME]' -c CONFIG_FILE
其中CONFIG_FILE
包含Chef的一些配置,例如
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命令的同一目录中,然后它将显示为
chef-solo -o 'recipe[COOKBOOK_NAME]' -c solo.rb
将COOKBOOK_NAME
替换为您要运行的食谱的名称,如果您想运行::recipe_name
食谱而不是recipe_name.rb
食谱,请添加default.rb
。