【问题标题】:Install RPM from file with Chef使用 Chef 从文件安装 RPM
【发布时间】:2016-02-11 14:53:43
【问题描述】:

我想对 Chef Solo 执行以下操作(服务器未连接到 Internet):

sudo yum install docker-*.rpm

我有以下结构:

cookbooks
└── my-cookbook
    └── recipes
        ├── default.rb
        └── docker.rb

我的食谱里有这个:

Dir['docker-*.rpm'].each do |pkg|
  rpm_package File.basename(pkg) do
    source pkg
  end
end

现在,我应该把 RPM 文件放在哪里?

【问题讨论】:

  • 重复候选人的答案很容易适应,最好的办法是使用内部 http 服务器。您也可以使用私人 yum 存储库。
  • Http 和自定义镜像是不可能的,需要将二进制文件和配方以及所有依赖项一起分发到一个包中。
  • 在这个acse中使用文件目录和cookbook_file资源
  • 在厨师服务器中使用带有说明书的 rpm 绝不是一个好主意。但以防万一您可以将 rpm 放入 /files/default 并使用 remote_directly 获取机器上的本地 rpm 以使用您的厨师服务器 url 作为 rpm -i /files/default /my.rpm

标签: ruby chef-infra chef-solo


【解决方案1】:

最好的方法是在可以从生产节点访问的主机上运行内部 Yum 存储库。

简单但缓慢/脆弱的方法是将 RPM 放入 files/rpms/ 并使用 remote_directory 资源,例如:

r = execute "rpm -i #{Chef::Config[:file_cache_path]}/myrpms/*.rpm" do
  action :nothing
end

remote_directory "#{Chef::Config[:file_cache_path]}/myrpms" do
  source 'rpms'
  notifies :run, r, :immediately
end

或类似的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多