与厨师一起安装多个包

sys*_*min 5 redhat package chef-infra

当我尝试使用通配符命名安装多个包时,我收到以下错误:

 * 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*]'
    ============================================================================                                                                                        ====
Run Code Online (Sandbox Code Playgroud)

食谱代码是:

package 'mysql-server' do
  action :install
end

package 'mysql*' do
  action :install
end
Run Code Online (Sandbox Code Playgroud)

Ten*_*bai 16

您必须使用确切的包名称.查找匹配包的厨师资源并不神奇.

资源的名称(包裹之后的部分)用作包名称并提供给底层系统(RH上的yum系统,类似于debian的系统)

如果你有多个要安装的软件包和一个通用配置,你可以在你的配方中循环它们:

['mysql-server','mysql-common','mysql-client'].each do |p|
  package p do
    action :install
  end
end
Run Code Online (Sandbox Code Playgroud)

使用一些ruby语法作为单词构建器可以简化数组创建%w:

%w(mysql-server mysql-common mysql-client).each [...]
Run Code Online (Sandbox Code Playgroud)

从厨师12.1开始,package资源直接接受一系列包,如下所示:

package %w(mysql-server mysql-common mysql-client)
Run Code Online (Sandbox Code Playgroud)