【发布时间】:2014-04-08 20:18:32
【问题描述】:
我有一个包含依赖项的 rpm 包列表。在本地我执行 rpm -i *.rpm 并且效果很好。当我使用 chef 的 rpm_package 资源时如何使用 -i 标志。我不能使用 yum,因为我们正在尝试离线工作。
只需要一个 rpm -i 的厨师方法。
【问题讨论】:
标签: chef-infra chef-recipe chef-solo
我有一个包含依赖项的 rpm 包列表。在本地我执行 rpm -i *.rpm 并且效果很好。当我使用 chef 的 rpm_package 资源时如何使用 -i 标志。我不能使用 yum,因为我们正在尝试离线工作。
只需要一个 rpm -i 的厨师方法。
【问题讨论】:
标签: chef-infra chef-recipe chef-solo
你有两个选择:
就像您在问题中所做的那样,您可以使用 bash 资源来执行 rpm 命令。默认情况下,这是非幂等的,并且(显然)不是跨平台的:
bash 'rpm -i *.rpm' do
cwd '/path/to/that/directory'
end
稍微不那么直接,你可以使用 Ruby 的原生文件系统函数来遍历树:
Dir['/path/to/rpms/*.rpm'].each do |path|
rpm_package File.basename(path) do
source path
end
end
这将遍历给定路径中与 glob 匹配的每个项目。
【讨论】: