Как включить и настроить библиотеку ruby ​​в рецепте Chef?

Я хочу включить драгоценный камень Diplomat в свою кулинарную книгу Chef, чтобы я мог выполнять поиск переменных Consul в шаблонах .erb.

Мне нужно настроить URL Consul:

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?


person asdoylejr    schedule 28.09.2016    source источник


Ответы (2)


Вы хотите использовать ресурс chef_gem, но обязательно запустите его на этапе компиляции:

chef_gem 'diplomat' do
  action :nothing
  compile_time false
end.run_action(:install)
require 'diplomat'
person coderanger    schedule 29.09.2016
comment
Это спасло мой рецепт шеф-повара, так как системные драгоценные камни не загружались по require. Я специально загрузил драгоценный камень для шеф-повара, используя приведенную выше команду. Затем используйте строку ниже, чтобы загрузить chef_gem "down" require 'down' - person Yugendran; 23.01.2019
comment
@coderanger Спасибо, но вы говорите: «Обязательно запустите его на этапе компиляции», но у вас есть compile_time false. Это опечатка или я неправильно понял? - person Jason Crease; 06.07.2020

Установка драгоценных камней с помощью Chef относительно безболезненна. В большинстве случаев вы можете использовать ресурс gem_package, который ведет себя очень похоже на собственный ресурс пакета:

gem_package 'httparty'

Вы даже можете указать версию gem для установки:

gem_package 'httparty' do version '0.12.0' end

Возможно, вы также видели ресурс chef_gem. Какая разница?

Ресурсы chef_gem и gem_package используются для установки драгоценных камней Ruby. Для любой машины, на которой установлен шеф-клиент, существует два экземпляра Ruby. Один из них является стандартным общесистемным экземпляром Ruby, а другой — выделенным экземпляром, доступным только клиенту шеф-повара. Используйте ресурс chef_gem для установки драгоценных камней в экземпляр Ruby, выделенный для шеф-клиента. Используйте ресурс gem_package для установки всех других драгоценных камней (т.е. установите драгоценные камни для всей системы).

источник: https://sethvargo.com/using-gems-with-chef/

person iGallina    schedule 28.09.2016
comment
Как вы могли догадаться из чего-то в 2013 году, этот пост сильно устарел. Пожалуйста, не обращайте внимания на большую часть этого. - person coderanger; 29.09.2016