我在厨师食谱中有以下内容:
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
),则会安装正确的版本。
为什么上面的代码没有正常工作?
答案 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上找到文档。