Chef - чтение внешних свойств в файлах chef recipe.rb - PullRequest
0 голосов
/ 13 января 2019

Я новичок в средстве развертывания Chef и хотел бы использовать его для одного из моих вариантов использования. Я могу вызвать вызов POST для конечной точки отдыха. Но с жестко закодированными данными url и json, как показано ниже:

рецепт / default.rb

template '/etc/response.txt' do
        owner "root"
        group "root"
        mode "0644"
        source "response.erb"
        variables({
                response:Chef::HTTP.new('https://abc.om/').post('/api/v1/something',
                { "data1": "value1", "data2": "value2"},
                {'Accept'=> 'application/json', 'Content-Type'=>'application/json'})
        })
end

Я хотел бы использовать динамическое значение url, json и другие параметры запроса. Я хочу, чтобы он был выведен наружу, например, в файле сред (как мы это делаем в веб-приложениях java), чтобы перед запуском chef-client на узлах пользователь мог предоставить значения параметров запроса. Как мы можем добиться этого в шеф-повара?

1 Ответ

0 голосов
/ 14 января 2019
Синтаксис

chef (recipe dsl) работает поверх ruby. таким образом, вы можете динамически использовать силу рубина - с точки зрения шеф-повара, вы можете сделать это в фазе компиляции или в фазе конвергенции :

  • фаза компиляции: все рецепты загружаются в порядке, указанном в расширенном рабочем списке.
  • фаза конвергенции: Каждый ресурс выполняется в порядке, указанном в списке выполнения, а затем в порядке, в котором каждый ресурс указан в каждом рецепте. ... каждое действие настраивает определенную часть системы.

для получения дополнительной информации о шеф-клиенте об этой фазе см. обзор шеф-клиента .

лучше всего сделать это на этапе конвергенции, и вы можете достичь этого, используя ресурсы ruby_block и \ или http_request.

Если вы хотите, чтобы в вашей кулинарной книге был статический файл, поместите его в COOKBOOK_NAME/files/default и прочитайте, как вам угодно. см. cookbook_file ресурс.

...