
아마도 전체 개념이 잘못되었을 것입니다. Ubuntu 12.04에서 작동하는 Vagrant VM이 있고 그 위에 몇 가지 패키지와 구성 파일을 설치하고 싶습니다. Chef에 설정했습니다. cookbooks/my_project/recipes 경로에 모든 지침이 포함된 vagrant-dev.rb 파일이 있습니다. 이제 Vagrantfile의 Vagrant 구성이 여기서 문제가 될 것입니다.
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks/my_project/recipes"
chef.add_recipe "vagrant-dev.rb"
end
VM을 로드하면
FATAL: Chef::Exceptions::CookbookNotFound: Cookbook vagrant-dev.rb not found.
마지막에 .rb 없이 시도했습니다. 나는 그것이 완전히 다른 문제라고 생각하며 올바른 방식으로 사용하지 않습니다. 하지만 검색을 해보니 제대로 수행하는 방법을 설명하는 내용을 찾을 수 없었습니다.
답변1
셰프 사용 시 모든 레시피~ 해야 하다요리책에 나오세요. 이미 요리책에 나와 있어서 잘못 부르고 있는 것 같지만, 제가 다 다룰 것이므로 다시 확인하실 수 있습니다.
요리책은 말 그대로 레시피 rb 파일, 약간의 메타데이터 및 선택적으로 기타 파일(템플릿 또는 데이터백과 같은)의 모음입니다. 따라서 .rb 파일을 직접 포함할 수 없으며 해당 요리책을 참조한 다음 파일 이름(.rb 제외)을 참조하여 실행해야 합니다.
간단한 요리책의 구조는 다음과 같습니다:
SomeCookbook
readme.md # needed for the long_description in metadata to work
metadata.rb # contains the actual information for the cookbook
recipes # Holds all the cookbook's recipies
default.rb # This is the default recipe, run if one isn't specified
otherRecipe.rb
templates # Templates that can be called by the cookbook
default
some-erb-style-template.erb
기본 디렉터리의 이름은 중요하지 않으며 템플릿 디렉터리는 선택 사항입니다.
metadata.rb
name "SomeCookbook"
maintainer "Me"
maintainer_email "[email protected]"
license "None"
description "Does something cool"
long_description IO.read(File.join(File.dirname(__FILE__), 'readme.md'))
version "0.0.1"
supports "centos"
위의 구조를 따르고 레시피 폴더에 레시피를 넣어야 합니다.
그런 다음 이것을 방랑자 파일에 추가하십시오.
chef.add_recipe "SomeCookbook::vagrant-dev"
위의 내용으로 문제가 조금 해결되기를 바랍니다.