Chef :: Exceptions :: Exec返回1,预期为0

时间:2014-05-05 09:43:41

标签: nginx chef vagrant test-kitchen

目前我正在CentOS VM上学习Chef + Test Kitchen,似乎每次运行kitchen converge时,某些软件包都会失败并抛出同样的错误:

Chef::Exceptions::Exec
----------------------

returned 1, expected 0

所有错误都位于package资源中。例如:

Compiled Resource:
------------------
# Declared in /tmp/kitchen/cookbooks/nginx/recipes/package.rb:39:in `from_file'

package("nginx") do
     action :install
     retries 0
     retry_delay 2
     guard_interpreter :default
     package_name "nginx"
     version "1.0.15-5.el6"
     cookbook_name :nginx
     recipe_name "package"
end

但是,当我使用kitchen login登录VM并手动运行

yum install nginx

它运行正常。此外,有时它在我第二次运行kitchen converge时安装得很好。

我的食谱文件是:

# create vtapp user
user node.default['railsapp']['user'] do
supports :manage_home => true
system true
home "/home/#{node.default['railsapp']['user']}"
shell '/bin/bash'
end

# install git
package 'git'

# install mysql and run the service
mysql_service 'default'

# install redis and run the service
include_recipe 'redis::server'

# install rbenv to vtapp user, and install ruby 2.1.0 along with bundler
include_recipe "ruby_build"
node.default['rbenv']['user_installs'] = [
    {
        'user' => node.default['railsapp']['user'],
    'rubies' => ['2.1.0'],
    'gems' => {
      '2.1.0' => [
        { 'name' => 'bundler' }
      ]
    }
    }
]
include_recipe "rbenv::user"

# install monit
include_recipe "monit"

# install nginx
include_recipe "nginx"

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

嗯,看起来很疯狂,在我将Vagrant的内存分配增加到1024 MB之后,如下面的链接中所述:

https://github.com/test-kitchen/kitchen-vagrant/issues/22

上面的间歇性问题突然消失了......

<强>更新

在增加内存分配后,我已成功重复运行完整的kitchen test命令: - )

更新(2):

我已经深入研究了Chef,另一个可能的原因是Chef内部设置超时以执行操作,如果我没记错的话,15分钟。我使用的可能解决方案是1)安装代理服务器以加快下载时间,2)增加互联网带宽,3)允许vagrant为VM分配更多CPU核心。

您还必须注意应用程序所需的最小内存。例如,我已经安装了ZenOSS和Chef,它至少需要3 GB内存,并且如果我在下面分配了内存,则会因上面的错误代码而失败。