当我尝试使用通配符命名安装多个软件包时,出现以下错误:
* yum_package[mysql-server] action install (up to date)
* yum_package[mysql*] action install
* No candidate version available for mysql*
============================================================================ ====
Error executing action `install` on resource 'yum_package[mysql*]'
============================================================================ ====
配方代码是:
package 'mysql-server' do
action :install
end
package 'mysql*' do
action :install
end
最佳答案
您必须使用准确的包名称。 Chef package资源并不能神奇地找到匹配的包。
资源的名称(包后面的部分)用作包名称并赋予底层系统(RH 类系统上的 yum,debian 类系统上的 apt)
如果您有多个要安装的软件包和通用配置,您可以在配方中循环它们:
['mysql-server','mysql-common','mysql-client'].each do |p|
package p do
action :install
end
end
可以使用一些 ruby 语法来简化数组创建,如单词 builder %w
:
%w(mysql-server mysql-common mysql-client).each [...]
自 Chef 12.1 起,package
资源接受 array of packages直接这样:
package %w(mysql-server mysql-common mysql-client)
关于package - 使用 Chef 安装多个软件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38325274/