2016-09-28 64 views
3

我想在我的廚師食譜中加入Diplomat gem,這樣我就可以在.erb模板中執行Consul變量查找。如何在Chef食譜中包含和配置一個ruby庫?

我需要配置領事網址:

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模板中執行變量查找?

回答

1

您要使用的chef_gem資源,但一定要在編譯階段運行:

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

與廚師安裝寶石是相對無痛的。在大多數情況下,你可以使用gem_package資源,其行爲非常類似於本機軟件包資源:

gem_package 'httparty'

你甚至可以指定寶石版本進行安裝:

gem_package 'httparty' do version '0.12.0' end

您可能也看到了chef_gem資源。有什麼不同?

chef_gem和gem_package資源都用於安裝Ruby gems。對於任何安裝了chef-client的機器,都有兩個Ruby的實例 。一個是Ruby的標準系統範圍實例 ,另一個是專用實例,僅對主廚客戶端 有效。使用chef_gem資源將寶石安裝到專用於廚師客戶端的Ruby的 實例中。使用 gem_package資源來安裝所有其他寶石(即安裝系統範圍內的寶石 )。

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

+0

正如你可能從一些在2013年想象的,那個帖子是瘋狂地過時了。請忽略大部分。 – coderanger

相關問題