[英]why chef_gem recipe works from chef-solo and not through vagrant
Resources chef_gem works with chef-solo
but not with vagrant up
资源chef_gem与
chef-solo
一起工作,但不适用于vagrant up
myapp/Vagrantfile myapp / Vagrantfile
Vagrant.configure("2") do |config|
config.vm.hostname = "my-hostname"
config.vm.box = "ubn1204-chef-gemsources-i386"
config.vm.network :private_network, ip: "33.33.33.10"
config.vm.boot_timeout = 120
config.berkshelf.enabled = true
config.vm.provision :chef_solo do |chef|
chef.json = {
:mysql => {
:server_root_password => 'rootpass',
:server_debian_password => 'debpass',
:server_repl_password => 'replpass'
}
}
chef.run_list = [
"recipe[myface::mysql_gem]"
]
end
end
*myapp/recipes/mysql_gem.rb* * myapp /食谱/mysql_gem.rb*
%w{mysql-client libmysqlclient-dev make}.each do |pack|
package pack do
action :nothing
end.run_action(:install)
end
g = chef_gem "mysql" do
action :nothing
end
g.run_action(:install)
when execute vagrant up
I get the following error 当执行
vagrant up
我得到以下错误
[2014-01-22T15:21:06+00:00] INFO: Forking chef instance to converge...
[2014-01-22T15:21:07+00:00] INFO: *** Chef 11.8.2 ***
[2014-01-22T15:21:07+00:00] INFO: Chef-client pid: 1162
[2014-01-22T15:21:09+00:00] INFO: Setting the run_list to ["recipe[myface::mysql_gem]"] from JSON
[2014-01-22T15:21:09+00:00] INFO: Run List is [recipe[myface::mysql_gem]]
[2014-01-22T15:21:09+00:00] INFO: Run List expands to [myface::mysql_gem]
[2014-01-22T15:21:09+00:00] INFO: Starting Chef Run for myface-berkshelf
[2014-01-22T15:21:09+00:00] INFO: Running start handlers
[2014-01-22T15:21:09+00:00] INFO: Start handlers complete.
[2014-01-22T15:22:54+00:00] WARN: failed to find gem mysql (>= 0) from [http://rubygems.org/]
[2014-01-22T15:22:54+00:00] ERROR: Running exception handlers
[2014-01-22T15:22:54+00:00] ERROR: Exception handlers complete
[2014-01-22T15:22:54+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2014-01-22T15:22:54+00:00] ERROR: chef_gem[mysql] (myface::mysql_gem line 6) had an error: ArgumentError: Illformed requirement [""]
================================================================================
Error executing action `install` on resource 'chef_gem[mysql]'
================================================================================
ArgumentError
-------------
Illformed requirement [""]
Cookbook Trace:
---------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/myface/recipes/mysql_gem.rb:9:in `from_file'
Resource Declaration:
---------------------
# In /tmp/vagrant-chef-1/chef-solo-1/cookbooks/myface/recipes/mysql_gem.rb
6: g = chef_gem "mysql" do
7: action :nothing
8: end
9: g.run_action(:install)
Compiled Resource:
------------------
# Declared in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/myface/recipes/mysql_gem.rb:6:in `from_file'
chef_gem("mysql") do
provider Chef::Provider::Package::Rubygems
action [:nothing]
retries 0
retry_delay 2
package_name "mysql"
cookbook_name :myface
recipe_name "mysql_gem"
end
================================================================================
Recipe Compile Error in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/myface/recipes/mysql_gem.rb
================================================================================
ArgumentError
-------------
chef_gem[mysql] (myface::mysql_gem line 6) had an error: ArgumentError: Illformed requirement [""]
Cookbook Trace:
---------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/myface/recipes/mysql_gem.rb:9:in `from_file'
Relevant File Content:
----------------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/myface/recipes/mysql_gem.rb:
2: package pack do
3: action :nothing
4: end.run_action(:install)
5: end
6: g = chef_gem "mysql" do
7: action :nothing
8: end
9>> g.run_action(:install) 10:
[2014-01-22T15:21:06+00:00] INFO: Forking chef instance to converge...
[2014-01-22T15:22:54+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.
however I go into vagrant VM vagrant ssh
但是我进入无业游民的VM
vagrant ssh
execute vagrant$ sudo chef-solo -c /vagrant/solo.rb -j /vagrant/aux.rb
it works ok. 执行vagrant $
sudo chef-solo -c /vagrant/solo.rb -j /vagrant/aux.rb
可以正常工作。
when 什么时候
/vagrant/aux.rb /vagrant/aux.rb
{
"mysql": {
"server_root_password": "rootpass",
"server_debian_password": "debpass",
"server_repl_password": "replpass"
},
"run_list": [ "recipe[myface::mysql_gem]" ]
}
and 和
/vagrant/solo.rb /vagrant/solo.rb
file_cache_path "/var/chef/cache"
file_backup_path "/var/chef/backup"
cookbook_path ["/tmp/vagrant-chef-1/chef-solo-1/cookbooks"]
log_level :info
verbose_logging true
encrypted_data_bag_secret "/tmp/encrypted_data_bag_secret"
Someone knows why it works ok directly from chef-solo and not through vagrant ? 有人知道为什么直接从chef-solo而不是无业游民就可以正常工作吗?
Tools versions 工具版本
这是一个已知的厨师错误-CHEF-3912
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.