每当我们创建一个新服务器时,我有一个bash脚本,它会向最终用户询问一组问题,以帮助chef配置自定义服务器,他/她对这些问题的回答需要注入chef,以便我可以在chef脚本中使用他们的回答(例如,设置服务器“hostname”=“server1.stack.com”)。在运行chef客户机时有一个json属性,我已经读过了,这可能会有帮助,但我不确定在我们的环境中如何工作。
注意:我们每15分钟通过cronjob在所有系统上运行一次chef客户端以获取更新。
密码:

echo -n "What is the server name?"
read hostname

chef-client -j {'hostname' => ENV['$hostname']}

最佳答案

两个问题,第一个是-j采用的文件名不是原始JSON,第二个是使用-j将完全覆盖来自服务器的节点数据,服务器还包括运行列表和环境。如果这是在系统配置时完成的,那么您肯定可以这样做,请参见my AMI bootstrap script以获取示例。如果这是在初始设置之后完成的,那么最好将这些响应写入一个文件,然后从厨师食谱代码中读取这些响应。

关于linux - 厨师:传递变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26242134/

10-13 07:25