如何使用ruby regex模式将属性值中的模式与配方only_if
或unless
进行匹配?
我正在尝试匹配rpm -qa | grep #{rpmpackage}
答案 0 :(得分:0)
我想您要检查是否安装了rpm,如果没有,则要安装它:
一些例子:
rpm_installed = "rpm -qa | grep -q '^runit'"
cookbook_file "#{Chef::Config[:file_cache_path]}/runit-2.1.1.tar.gz" do
source 'runit-2.1.1.tar.gz'
not_if rpm_installed
notifies :run, 'bash[rhel_build_install]', :immediately
end
对于下一个问题,您可以使用:upgrade
来安装软件包和/或确保软件包是最新版本,而不是每次都删除软件包,并且您也可以使用allow_downgrade true
进行降级一个包,以满足所要求的版本要求。
带有mysql rpm文件的远程文件示例:
%w{
mysql-community-common-5.7.16-1.el7.x86_64.rpm
mysql-community-libs-5.7.16-1.el7.x86_64.rpm
}.each do |pkg|
remote_file "/tmp/#{pkg}" do
source "https://install.mysql.com/#{pkg}"
end
rpm_package pkg do
source "/tmp/#{pkg}"
action :upgrade
end
end
如果不起作用,请尝试将allow_downgrade true
与action :install
一起使用,每次都不需要删除rpm包,allow_downgrade true
应该有效。
%w{
mysql-community-common-5.7.16-1.el7.x86_64.rpm
mysql-community-libs-5.7.16-1.el7.x86_64.rpm
}.each do |pkg|
remote_file "/tmp/#{pkg}" do
source "https://install.mysql.com/#{pkg}"
end
rpm_package pkg do
source "/tmp/#{pkg}"
action :install
allow_downgrade true
end
end