NoMethodError:未定义的方法`preferred_filename_on_disk_location'为零:NilClass

时间:2017-01-02 23:43:04

标签: chef

我是红宝石和厨师的新手。我试图通过模板资源创建一个文件。运行chef-apply命令后,我收到一些错误" NoMethodError:未定义的方法`preferred_filename_on_disk_location'为零:NilClass" 。我试图谷歌,但没有找到正确的解决方案。

请帮忙。

chef-apply abc.rb

食谱:(厨师应用食谱)::(厨师应用食谱)   * 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

1 个答案:

答案 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