
Provavelmente entendi todo o conceito errado: tenho uma VM Vagrant funcionando com Ubuntu 12.04, além disso quero instalar alguns pacotes e arquivos de configuração. Eu os configurei no Chef, no caminho cookbooks/my_project/recipes eu tenho um arquivo vagrant-dev.rb com todas as instruções. Agora minha configuração do Vagrant no Vagrantfile deve ser o problema aqui:
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks/my_project/recipes"
chef.add_recipe "vagrant-dev.rb"
end
e quando carrego a VM recebo
FATAL: Chef::Exceptions::CookbookNotFound: Cookbook vagrant-dev.rb not found.
Tentei sem o .rb no final. Acho que é uma questão completamente diferente e não estou usando da maneira correta. Mas depois de pesquisar não consegui encontrar nada que explicasse como fazer isso corretamente.
Responder1
Ao usar chef, todas as receitasdeveestar em livros de receitas. Parece que você já o tem em um livro de receitas e está apenas chamando-o de errado, mas abordarei tudo para que você possa verificar novamente.
Os livros de receitas são literalmente apenas uma coleção de arquivos rb de receitas, um pouco de metadados e, opcionalmente, alguns outros arquivos (como modelos ou databags). Portanto, você não pode incluir o arquivo .rb diretamente, é necessário fazer referência ao seu livro de receitas e, em seguida, ao nome do arquivo (sem .rb) para executá-lo.
A estrutura de um livro de receitas simples deve ser semelhante a:
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
O nome do diretório principal não importa e o diretório de modelos é opcional.
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"
Siga a estrutura acima e certifique-se de colocar sua receita na pasta de receitas.
Em seguida, adicione isto ao seu arquivo vagrant:
chef.add_recipe "SomeCookbook::vagrant-dev"
Espero que o que foi dito acima esclareça um pouco as coisas.