厨师-读取Chef recipe.rb文件中的外部属性

时间:2019-01-13 05:18:18

标签: chef

我是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 Web应用程序中的方式),以便在节点上运行Chef-Client之前,用户可以为请求参数提供值。我们如何在厨师中实现这一目标?

1 个答案:

答案 0 :(得分:0)

chef语法(配方dsl)在ruby之上运行。因此,您可以充分利用红宝石的力量-以厨师的眼光,您可以在编译阶段融合阶段

  • 编译阶段::所有配方均按照扩展的运行列表指定的顺序加载。
  • 收敛阶段::每种资源都按照运行列表标识的顺序执行,然后按照每种配方中每种资源的列出顺序执行。 ...每个动作都会配置系统的特定部分。

有关此阶段的厨师客户的更多信息,请参见chef-client overview

最好在融合阶段做到这一点,您可以使用ruby_block和/或http_request资源来实现。

如果您想在菜谱中包含静态文件,则将其放在COOKBOOK_NAME/files/default中,并根据需要阅读。参见cookbook_file资源。