每次我們創建一個新的服務器我有一個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