如何在没有缓存的互联网连接的情况下调用yum_package?

时间:2015-02-10 11:10:08

标签: chef yum

我们运行chef的部分机器无法使用基本软件包(如openjdk)访问yum-repository。

在chef11中,我们设法通过设置/etc/yum.conf

中的参数来触发互联网连接
exclude=*
metadata_expire=2147483647
mirrorlist_expire=2147483647

不幸的是,在chef12中,这还不够。我们得到一个例外:

[2015-02-10T09:43:38+00:00] ERROR: yum_package[java-1.7.0-openjdk] (java::openjdk line 46) had an error: Mixlib::ShellOut::CommandTimeout: Command timed out after 900s:
Command exceeded allowed execution time, process terminated
---- Begin output of /usr/bin/python /opt/chef/embedded/apps/chef/lib/chef/provider/package/yum-dump.py --options --installed-provides --yum-lock-timeout 30 ----
STDOUT: 
STDERR: 
---- End output of /usr/bin/python /opt/chef/embedded/apps/chef/lib/chef/provider/package/yum-dump.py --options --installed-provides --yum-lock-timeout 30 ----
Ran /usr/bin/python /opt/chef/embedded/apps/chef/lib/chef/provider/package/yum-dump.py --options --installed-provides --yum-lock-timeout 30 returned 
[2015-02-10T09:43:38+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

是否有标志或黑客来禁用对yum-dump的此调用。我们提供了一个basebox,其中已经安装了正确版本的软件包?

我查看了一些缓存标志但是没有找到任何明显的标志?

1 个答案:

答案 0 :(得分:0)

我认为您可以使用cookbook文件将本地包删除到临时目录,然后执行

cookbook_file "/tmp/yourpackage-1.1.1.rpm" do
  source "yourpackage-1.1.1.rpm"
  action :create
end

package "yourpackage" do
  source "/tmp/yourpackage-1.1.1.rpm
  action :install
end