每次我们创建一个新的服务器我有一个bash脚本向最终用户询问一组帮助厨师配置自定义服务器的问题,他/她对这些问题的回答需要注入厨师我可以在我的厨师脚本中使用他们的响应(例如,设置服务器“hostname”=“server1.stack.com”)。在运行chef-client时有一个json属性我已经阅读过这些可能有用的信息,但我不确定在我们的环境中该如何工作。厨师:传递变量
注意:我们通过cronjob每15分钟在我们的所有系统上运行chef-client以获取更新。
伪代码:
echo -n "What is the server name?"
read hostname
chef-client -j {'hostname' => ENV['$hostname']}
我相信你错了。我刚刚在我的服务器上验证了传入-j的参数不会覆盖run_list或环境。 事实上,如果我正确地阅读源代码,它会在服务器的-j内容和常规属性之间进行深度合并。 https://github.com/opscode/chef/blob/cbb9ae97e2d3d90b28764fbb23cb8eab4dda4ec8/lib/chef/node.rb#L293 – 2014-10-08 01:28:11
我得到了脚本中的逻辑,它看起来像你在运行这个client-bootstrap.sh目标机器本身? – user3617841 2014-10-08 15:53:53