package - 使用 Chef 安装多个软件包

标签 package chef-infra redhat

当我尝试使用通配符命名安装多个软件包时,出现以下错误:

 * 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/

相关文章:

java - 将一个包 move 到另一个包并更新字符串引用?

Perl:全局符号需要显式包名称

java - 在 Chef 中禁用 docker 容器日志配置

chef-infra - Chef - 数据包查询

linux - 如何使用不同的端口在同一 IP 上运行多个 Web 应用程序

mysql - 无法在 RHEL 6.5 上安装 lib_mysqludf_sys

java - eclipse | Packge变成一个目录,破坏了我的整个项目

java - 选择性 jar 装

linux - ANSIBLE “ERROR! the field ' 主机是必需的,但未设置”

linux - jobs -l 命令无法使用 csh 写入文件