
Probablemente me equivoqué en todo el concepto: tengo una máquina virtual Vagrant en funcionamiento con Ubuntu 12.04, además quiero instalar algunos paquetes y archivos de configuración. Los tengo configurados en Chef, en la ruta cookbooks/my_project/recipes tengo un archivo vagrant-dev.rb con todas las instrucciones. Ahora mi configuración de Vagrant en Vagrantfile debe ser el problema aquí:
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks/my_project/recipes"
chef.add_recipe "vagrant-dev.rb"
end
y cuando cargo la VM me sale
FATAL: Chef::Exceptions::CookbookNotFound: Cookbook vagrant-dev.rb not found.
Lo intenté sin el .rb al final. Supongo que es un asunto completamente diferente y no lo estoy usando de la manera correcta. Pero después de buscar no pude encontrar nada que explicara cómo hacerlo correctamente.
Respuesta1
Al usar chef, todas las recetas.debeestar en libros de cocina. Parece que ya lo tienes en un libro de cocina y simplemente lo estás llamando mal, pero lo cubriré todo para que puedas volver a comprobarlo.
Los libros de cocina son literalmente solo una colección de archivos rb de recetas, algunos metadatos y, opcionalmente, algunos otros archivos (como plantillas o bolsas de datos). Por lo tanto, no puede incluir el archivo .rb directamente, debe hacer referencia a su libro de recetas y luego al nombre del archivo (sin .rb) para ejecutarlo.
La estructura de un libro de cocina simple debería verse así:
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
El nombre del directorio principal no importa y el directorio de plantillas es 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 la estructura anterior y asegúrese de colocar su receta en la carpeta de recetas.
Luego agregue esto a su archivo vagabundo:
chef.add_recipe "SomeCookbook::vagrant-dev"
Espero que lo anterior aclare un poco las cosas.