2017-01-02 4 views
-1

나는 루비와 요리사의 초보자입니다. 템플릿 리소스를 통해 파일을 만들려고했습니다. chef-apply 명령을 실행 한 후 "NoMethodError : undefined method`preferred_filename_on_disk_location 'for nil : NilClass"오류가 발생합니다. 나는 그것을 시도했지만 올바른 해결책을 찾지 못했습니다.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 : 37 : 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] FATAL : 버그 리포트를 제출하면 stacktrace.out 파일의 내용을 입력하십시오 [2017-01-02T18 : 37 : 07-05 : 00] FATAL : NoMethodError : template [file.txt] ((요리사 신청 요리 책을) : :(오류했다) 제조법) 라인 (10) 요리사 적용 NoMethodError : 정의되지 않은 메서드`preferred_filename_on_disk_location '전무를 들어 : NilClass

+0

StackOverflow에 오신 것을 환영합니다. 질문의 형식을 수정하십시오. 코드 및 오류 메시지의 형식이 올바로 지정되어 있으면 더 쉽게 도움을받을 수 있습니다. –

+0

[ask]와 [mcve]를 참조하십시오 –

답변

0

chef-apply 제대로 템플릿 리소스를 실행할 수없는 것처럼 (참조 보인다 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를 호출 위의 요리사 명령을 실행 같은 디렉토리에 넣을 수 있습니다

는, 그것은 당신이 원하는 요리 책의 이름으로 COOKBOOK_NAME 교체

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

모양을 실행하려면 default.rb 제조법이 아닌 recipe_name.rb 제조법을 실행하려면 ::recipe_name을 추가하십시오.

+1

OP의 요리사에 대한 기본 지식이 부족한 것처럼 https://learn.chef.io 링크를 추가 할 가치가 있습니다. chef-apply를 사용하여 단일 요리법에서 Chef-apply 또는 Chef-zero 또는 solo로 이동하는 것은 chef-apply (로컬 호스트의 빠른 구성만을 목표로 함)를 알 때 쉽지 않음 – Tensibai

+0

chef-solo를 사용하도록이 문제를 해결했습니다. 현재 버전에 맞습니다. – coderanger

관련 문제