ruby - Chef 没有运行 apt (apt-get update) 配方。返回 100

标签 ruby ubuntu-11.04 apt-get chef-infra chef-recipe

在 vagrant、mac os x 10.7.2 上运行 Ubuntu 11.04。运行 Chef 服务器。

尝试安装 postgresql 社区 Chef Recipe 时,我收到以下错误,即使我的基本角色看起来像这样(我添加了 apt Recipe 以尝试更新 apt-get):

name "base"
description "The base role for systems"
run_list(
        "recipe[apt]",
        "recipe[vim]"
)

尝试运行 Chef :

$ vagrant reload db1dev
[db1dev] Attempting graceful shutdown of linux...
[db1dev] Preparing host only network...
[db1dev] Clearing any previously set forwarded ports...
[db1dev] Forwarding ports...
[db1dev] -- ssh: 22 => 2222 (adapter 1)
[db1dev] Cleaning previously set shared folders...
[db1dev] Creating shared folders metadata...
[db1dev] Running any VM customizations...
[db1dev] Booting VM...
[db1dev] Waiting for VM to boot. This can take a few minutes.
[db1dev] VM booted and ready for use!
[db1dev] Enabling host only network...
[db1dev] Mounting shared folders...
[db1dev] -- v-root: /vagrant
[db1dev] Running provisioner: Vagrant::Provisioners::ChefClient...
[db1dev] Creating folder to hold client key...
[db1dev] Uploading chef client validation key...
[db1dev] Generating chef JSON and uploading...
[db1dev] Running chef-client...
[db1dev] stdin: is not a tty
: stderr
[db1dev] [Thu, 19 Jan 2012 21:44:45 -0800] INFO: *** Chef 0.10.2 ***
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:46 -0800] INFO: Client key /etc/chef/client.pem is not present - registering
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:46 -0800] INFO: HTTP Request Returned 404 Not Found: Cannot load node dev-vagrant-db1-andres
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Setting the run_list to ["role[base]", "role[db_master]"] from JSON
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Run List is [role[base], role[db_master]]
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Run List expands to [base_server, vim, postgresql::server]
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Starting Chef Run for dev-vagrant-db1-andres
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Loading cookbooks [base_server, openssl, postgresql, vim]
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Removing cookbooks/apt/resources/repository.rb from the cache; its cookbook is no longer needed on this client.
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Removing cookbooks/apt/metadata.rb from the cache; its cookbook is no longer needed on this client.
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Removing cookbooks/apt/providers/repository.rb from the cache; its cookbook is no longer needed on this client.
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Removing cookbooks/apt/recipes/cacher.rb from the cache; its cookbook is no longer needed on this client.
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Removing cookbooks/apt/recipes/cacher-client.rb from the cache; its cookbook is no longer needed on this client.
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Removing cookbooks/apt/recipes/default.rb from the cache; its cookbook is no longer needed on this client.
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Removing cookbooks/apt/metadata.json from the cache; its cookbook is no longer needed on this client.
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Removing cookbooks/apt/README.md from the cache; its cookbook is no longer needed on this client.
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Storing updated cookbooks/base_server/recipes/default.rb in the cache.
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Storing updated cookbooks/base_server/README.rdoc in the cache.
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Storing updated cookbooks/base_server/metadata.rb in the cache.
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:47 -0800] INFO: Processing package[postgresql-client] action install (postgresql::client line 37)
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:48 -0800] ERROR: package[postgresql-client] (postgresql::client line 37) has had an error
[Thu, 19 Jan 2012 21:44:48 -0800] ERROR: Running exception handlers
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:48 -0800] FATAL: Saving node information to /srv/chef/file_store/failed-run-data.json
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:48 -0800] ERROR: Exception handlers complete
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:48 -0800] FATAL: Stacktrace dumped to /srv/chef/file_store/chef-stacktrace.out
: stdout
[db1dev] [Thu, 19 Jan 2012 21:44:48 -0800] FATAL: Chef::Exceptions::Exec: package[postgresql-client] (postgresql::client line 37) had an error: apt-get -q -y install postgresql-client=8.4.8-0ubuntu0.10.04 returned 100, expected 0
: stdout
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

chef-client -c /etc/chef/client.rb -j /etc/chef/dna.json

The output of the command prior to failing is outputted below:

[no output]

如果我从服务器内部手动执行 $sudo apt-get update,再运行一次 chef-client install postgres 没有问题。关于为什么 apt 配方没有运行的任何想法? (我也知道它没有运行,因为 apt-get 的时间戳文件不是在 ubuntu 中创建的)。任何帮助将不胜感激。

最佳答案

所以,从你打印的错误来看,似乎是运行命令

apt-get -q -y install postgresql-client=8.4.8-0ubuntu0.10.04

失败了。

但是你说如果你跑

apt-get update

首先,然后重新配置,是否正常?

我的直觉是,当你第一次运行 chef 时,你请求的 postgresql 客户端版本不在你下载的 apt 包列表中,但运行 apt-get update 会找到那个版本。

我看到您首先运行了一个 base_server 配方,这是将 apt 存储库添加到列表中吗?

无论如何,我建议在运行 postgres 配方之前运行 apt-get update,我认为这可能适合放入 base_server 配方。

关于ruby - Chef 没有运行 apt (apt-get update) 配方。返回 100,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8937351/

相关文章:

ruby - 当 Net::HTTP 响应被缓存且不是最新版本时该怎么办?

ruby - 连接池返回 Redis 的实例而不是 ConnectionPool

ruby-on-rails - ActionView::MissingTemplate,带有 JSON 的 Rails 5 API

linux - apt-get install 只显示最后一行

rake - Ubuntu 11.04 : `apt-get install rake` -> "E: Unable to locate package rake"

重新安装 R linux ubuntu : unmet dependencies R

ruby - 从几个给定的集合中生成所有可能的 DNA 序列

python - Ubuntu Unity 下 PyGTK 菜单不显示?

c# - 使用 Java TCP 服务器连接到 Ubuntu,使用 C# TCP 套接字连接到 Windows 7

opencv - 在Ubuntu服务器11.10上安装OpenCV预构建库