繁体   English   中英

如何在Chef配方中包含和配置ruby库?

[英]How would I include and configure a ruby library in a Chef recipe?

我想在我的Chef cookbook中包含Diplomat gem,以便我可以在.erb模板中执行Consul变量查找。

我需要配置Consul URL:

irb(main):015:0> require 'diplomat'
irb(main):016:0> Diplomat.configure do |config|
irb(main):017:1*   config.url = "consulurl:80"
irb(main):018:1> end

将变量设置为URL路径:

irb(main):020:0> kv_path = "path/to/variable"
=> "path/to/variable"

最后,在模板中执行查找。

irb(main):022:0> foo = Diplomat::Kv.get(kv_path + '/test_foo_123')
=> "bar"

在食谱中我需要编写上面的配置代码,以便我可以在.erb模板中执行变量查找?

您想使用chef_gem资源,但请确保在编译阶段运行它:

chef_gem 'diplomat' do
  action :nothing
  compile_time false
end.run_action(:install)
require 'diplomat'

与Chef一起安装宝石是相对轻松的。 大多数情况下,您可以使用gem_package资源,该资源的行为与本机包资源非常相似:

gem_package 'httparty'

您甚至可以指定要安装的gem版本:

gem_package 'httparty' do version '0.12.0' end

您可能还看过chef_gem资源。 有什么不同?

chef_gem和gem_package资源都用于安装Ruby gem。 对于安装了chef-client的任何机器,有两个Ruby实例。 一个是Ruby的标准系统范围实例,另一个是专用实例,仅供Chef-client使用。 使用chef_gem资源将gem安装到专用于chef-client的Ruby实例中。 使用gem_package资源安装所有其他gem(即在系统范围内安装gem)。

来源: https//sethvargo.com/using-gems-with-chef/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM