【问题标题】:Adding to the Chef Gem Source?添加到 Chef Gem 源?
【发布时间】:2017-03-30 03:00:54
【问题描述】:

我的组织完全在防火墙内工作(即没有机器可以访问互联网)。每当厨师食谱更新并需要 gem 时,食谱就会失败,因为它们无法从 ruby​​gems.org 下载和安装 gem。

我们自己托管所需 gem 的副本 - 我们如何向厨师添加自定义内部源,这样我们就不必处​​理失败?

【问题讨论】:

  • 你在使用像 chef-dk 这样的东西吗?还是berkshelf?
  • 您不会将其添加到 Chef - 您会向指向您的内部 gem 服务器的所有系统(可能使用 Chef)添加一个 gemrc 文件。
  • gemrc 文件应该放在哪里?我们的厨师环境(~150)节点中只有 Windows 系统。

标签: ruby rubygems chef-infra


【解决方案1】:

您可以使用 Chef Client 管理嵌入式 Ruby 的 gemrc。

chef_etc_dir = Chef::Util::PathHelper.join(Chef::Config.embedded_dir, 'etc')
chef_gemrc   = Chef::Util::PathHelper.join(chef_etc_dir, 'gemrc')

directory chef_etc_dir do
  owner "root"
  group "root"
  mode "0755"
end.run_action(:create)

file chef_gemrc do
  owner "root"
  group "root"
  mode "0644"
  content <<EOF
---
:sources:
- https://path.to.internal.repo/
- https://rubygems.org
:update_sources: true
EOF
  end.run_action(:create)

PathHelper 方法应该为 Windows 或 Linux 提供适当的路径。

“.run_action(:create)”添加在编译时执行资源,而不是在收敛时执行,以确保后续chef_gem资源在收敛时可以访问新管理的gemrc。

更新:Chef 似乎推荐 rubygems cookbook 来执行此功能。

gemrc :global do
  values(
    sources: %w{ https://path.to.internal.repo https://rubygems.org }
  )
end

【讨论】:

  • rubygems 食谱能否帮助我们解决自 2017 年以来一直困扰我们的已更改的 ruby​​gems 上游源代码问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
  • 2016-09-14
相关资源
最近更新 更多