我是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之前,用户可以为请求参数提供值。我们如何在厨师中实现这一目标?
答案 0 :(得分:0)
chef语法(配方dsl)在ruby之上运行。因此,您可以充分利用红宝石的力量-以厨师的眼光,您可以在编译阶段或融合阶段:
有关此阶段的厨师客户的更多信息,请参见chef-client overview。
最好在融合阶段做到这一点,您可以使用ruby_block
和/或http_request
资源来实现。
如果您想在菜谱中包含静态文件,则将其放在COOKBOOK_NAME/files/default
中,并根据需要阅读。参见cookbook_file
资源。