【问题标题】:Chef::Exceptions::Exec returned 1, expected 0Chef::Exceptions::Exec 返回 1,预期为 0
【发布时间】:2014-07-13 20:02:29
【问题描述】:

我目前正在 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 登录虚拟机并手动运行时

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.除了 ` # Declared in /tmp/kitchen/cookbooks/nginx/recipes/package.rb:39:39:in from_file' 2. 当你评论 include_recipe "nginx" 时,它是否工作?
  • 1.是的,我有,但是在我增加内存分配 (o_O) 2 后错误消失了。如果我评论该行,其他配方在编译到各自的 package 资源时偶尔会失败。

标签: nginx chef-infra vagrant test-kitchen


【解决方案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 内核。

您还必须注意应用程序所需的最小内存。例如,我用 Chef 安装了 ZenOSS,它至少需要 3 GB 内存,如果我分配的内存低于这个值,就会出现上述错误代码。

【讨论】:

  • 这对我来说似乎很奇怪。我会使用 -debug 标志运行 chef-client 以查看它到底在哪里失败。
  • 正如我所说,某些包会间歇性地失败,但总是在调用 package 资源时失败。我用的是 chef-solo,和 chef-client 一样吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多