您可以使用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食谱 执行此功能。
gemrc :global do values( sources: %w{ https://path.to.internal.repo https://rubygems.org } ) end