2015-10-25 2 views
0

Я пытаюсь предоставление бродяги VM с шефом-поваром, но я получаю следующее сообщение:Vagrant/Шеф - Поваренная книга не найден

«ОШИБКА: поваренная сестренка не найден Если вы загружаете сестренку из другой поваренной книги. , убедитесь, что вы настраиваете зависимость в своих метаданных ».

Мой текущий файл default.rb является следующее:

bash "apt update" do 
code "apt-get update" 
end 

# manually install php 5.5.... 
execute "yum install -y --skip-broken php55w php55w-devel php55w-cli php55w-snmp php55w-soap php55w-xml php55w-xmlrpc php55w-process php55w-mysqlnd php55w-pecl-memcache php55w-opcache php55w-pdo php55w-imap php55w-mbstring" 

bash "install mysql-server 5.1.69" do 
user "root" 
cwd "/tmp" 
code <<-EOH 
groupadd mysql 
useradd -r -g mysql mysql 
cd /usr/local 
wget http://cdn.mysql.com/Downloads/MySQL-5.1/mysql-5.1.69-linux-i686-glibc23.tar.gz 
tar zxvf mysql-5.1.69-linux-i686-glibc23.tar.gz 
rm mysql-5.1.69-linux-i686-glibc23.tar.gz 
ln -s mysql-5.1.69-linux-i686-glibc23 mysql 
cd mysql 
chown -R mysql . 
chgrp -R mysql . 
scripts/mysql_install_db --user=mysql 
chown -R root . 
chown -R mysql data 
cp support-files/my-medium.cnf /etc/my.cnf 
cp support-files/mysql.server /etc/init.d/mysql.server 
EOH 
not_if do 
File.exists?("/etc/my.cnf") 
end 
end 

bash "start mysql-server 5.1.69" do 
user "root" 
code <<-EOH 
sudo /etc/init.d/mysql.server start 
/usr/local/mysql/bin/mysql -e 'GRANT ALL ON *.* TO root;' 
EOH 
end 

И мой файл метаданных состоит в следующем:

name    "Test Machine" 
maintainer  "Claudio" 
maintainer_email "******" 
license   "All rights reserved" 
description  "Installs/Configures sis" 
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) 
version   "0.0.1" 

Мой текущий Vagrantfile:

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant::Config.run do |config| 
# All Vagrant configuration is done here. The most common configuration 
# options are documented and commented below. For a complete reference, 
# please see the online documentation at vagrantup.com. 

# Every Vagrant virtual environment requires a box to build off of. 
config.vm.box = "precise32" 

# The url from where the 'config.vm.box' box will be fetched if it 
# doesn't already exist on the user's system. 
config.vm.box_url = "http://files.vagrantup.com/precise32.box" 
config.vm.customize ["modifyvm", :id, "--memory", 512] 
config.vm.network :hostonly, "192.168.100.10" 
#config.vm.provision :shell, path: "bootstrap.sh" 


# Enable provisioning with chef solo, specifying a cookbooks path, roles 
# path, and data_bags path (all relative to this Vagrantfile), and adding 
# some recipes and/or roles. 
# 
config.vm.provision :chef_solo do |chef| 
chef.cookbooks_path = "./cookbooks" 
chef.roles_path = "./roles" 
chef.data_bags_path = "./data_bags" 

#hef.add_recipe "sis" 
#chef.add_role "web" 

    # You may also specify custom JSON attributes: 
    chef.json = { :mysql_password => "foo" } 
    end 

end 

Любая идея о Как я могу решить эту проблему?

+0

Выполнение и шаги bash должны быть исключением в рецептах шеф-повара. Например, ресурс пакета обрабатывает yum. –

+0

Где «sis» действительно отображается в вашем коде? Вы только показываете в описании поваренной книги, и это не приведет к ошибке. –

+0

У меня есть папка sis в поваренных книгах/sis. В папке sis хранится папка рецептов. –

ответ

0

name В метаданных должно отображаться название поваренной книги. Неважно, что такое имя папки, где находится ваша кулинарная книга.

Ваша проблема заключается в том, что у вас есть «тестовая машина» в кулинарных книгах, но включайте рецепт «sis» в Vagrantfile. Или измените имя на «sis» в метаданных.rb или измените chef.add_recipe "sis" на chef.add_recipe "Test Machine" в Vagrantfile.

0

Ваше состояние metadata.rb:

name    "Test Machine" 

Ваш кулинарной должен находиться в папке под названием "Test Machine", а не "сестренка". или ваш metadata.rb должен быть обновлен.

Потратьте некоторое время на learning chef, чтобы ознакомиться с основами написания поваренной книги.

Вы не говорите, какую версию повара вы используете, поэтому я не могу дать больше советов.

0

если ваш рецепт находится в cookbooks/sis/recipes/default.rb затем использовать как:

chef.cookbooks_path = "cookbooks" 
chef.add_recipe "sis::default" 

если у вас есть несколько файлов, как cookbooks/sis/recipes/file1.rb...file2.rb затем использовать как:

chef.add_recipe "sis::file1" 
chef.add_recipe "sis::file2" 

также сохранить правильные поваренные книги пути, вы можете дать FULLPATH из поваренные книги, такие как:

chef.cookbooks_path = "/home/user/fullpath/cookbooks" 

cookbooks_path (string or array) - A list of paths to where cookbooks are stored. By default this is "cookbooks", expecting a cookbooks folder relative to the Vagrantfile location.

Смежные вопросы