为什么我不能使用Chef刚刚添加的repo安装包?

时间:2015-01-15 23:05:05

标签: chef

我在厨师食谱中有以下内容:

cookbook_file '/etc/yum.repos.d/wandisco-svn.repo' do
  source 'wandisco-svn.repo'
end

execute 'yum clean all'

package 'subversion' do
  action :install
end

使用Chef配置服务器后,安装了错误版本的Subversion(来自其他yum repos的旧版本)。我可以立即运行yum list subversion并查看正确的版本。

如果我手动执行上述操作(创建文件,运行yum clean all并运行yum install subversion),则会安装正确的版本。

为什么上面的代码没有正常工作?

2 个答案:

答案 0 :(得分:3)

Chef将yum包数据库缓存在内存中,以加快配方执行速度。您可以使用以下方法将其清除:

yum_package 'subversion' do
  flush_cache before: true
end

而不是现有的包资源。

答案 1 :(得分:0)

The answer provided by coderanger指出了代码的问题。您还可以使用yum_repository使Chef知道您正在添加存储库(而不是将任意文件添加到文件系统并执行任意命令)来解决问题:

yum_repository 'wandisco-svn' do
  description 'Wandisco SVN Repo'
  baseurl 'http://opensource.wandisco.com/centos/6/svn-1.8/RPMS/$basearch/'
  gpgcheck false
  enabled true
end

package 'subversion' do
  action :install
end

默认情况下,yum_repository会处理刷新Chef缓存和Yum缓存的问题。有许多不同的选项可以按您需要的方式设置存储库。可以在chef-cookbooks/yum GitHub repository上找到文档。