2013-11-03 129 views
1

我不知道爲什麼我無法在interwebs上找到任何關於此的信息。廚師獨奏獲取用戶輸入

我基本上想寫一個配方,提示用戶輸入他們的github用戶名/密碼,然後發佈到github API添加一個ssh密鑰。

我敢肯定,我可以提示用戶使用普通的ruby方法(即獲取),但這似乎並不自然,因爲所有的實用工具廚師提供。

有人可以告訴我一個'廚師'的方式來提示用戶輸入存儲在瓦爾斯供以後使用嗎?

我想先輸出一些指令,因爲他們鍵入

+0

您是否找到解決此問題的解決方案?回答你自己的問題是可以的。請不要忘記標記答案是正確的! :) – sethvargo

+0

這可能會回答你的問題:http://stackoverflow.com/questions/14730833/how-i-can-capture-values-in-command-line-and-add-to-recipe – jkulak

回答

2

我的用戶閱讀,然後獲取用戶名,然後密碼,我想爲了安全起見,密碼應該不會在控制檯上顯示'd說廚師不是爲了這樣的用戶輸入。

您可以使用,它是在廚師運行的編譯階段執行Ruby代碼,但我建議如下:

怎麼樣從environment variable讀書呢?

+1

所以我想這不是標準的行爲,然後......我的問題是,我的廚師腳本本身是從一個自動化的腳本運行,所以它會有點煩惱設置ENV變量之前 – brad

1

這感覺超級骯髒,但這實際上起作用。也許有些東西是可以調整,這樣感覺多一點清潔:

 
file "/tmp/ans" do 
    puts "Enter something useful!" 
    content ::STDIN.readline 
end 

您可以將這樣的配方與chef-apply,請注意使用Vagrant將無法​​正常工作。

不過,我會建議做不同。另一種方法是不直接調用廚師,而是通過包裝腳本。這可以讀取用戶的數據並將其寫入json文件,然後通過-j PATH, --json-attributes PATH參數(請參閱chef-solo parameters)將其發送給主廚。

+0

哦,或者該腳本可以設置環境變量:D(但使用'-j'參數感覺更乾淨。 – StephenKing

+1

有趣的想法...我會給它一個鏡頭,並回復給你,thx! – brad