Chef와 지침이 포함된 .rb 파일을 사용하여 vagrant VM을 프로비저닝하는 방법

Chef와 지침이 포함된 .rb 파일을 사용하여 vagrant VM을 프로비저닝하는 방법

아마도 전체 개념이 잘못되었을 것입니다. 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"

위의 내용으로 문제가 조금 해결되기를 바랍니다.

관련 정보