0
我有一個簡單的廚師食譜,它所做的就是在CentOS機器上設置MOTD。它需要/tmp/mymotd.txt的內容並將其轉換爲MOTD。在廚師食譜中運行任意紅寶石代碼
我還有一個簡單的ruby腳本(一個完整的ruby腳本),它只是從Web服務器讀取文本並放入/tmp/mymotd.txt。
我的問題是:
- 如何從食譜中運行這個Ruby腳本?
- 我怎麼事先通過一些參數傳遞給腳本(例如網絡服務器的地址)
非常感謝。
我有一個簡單的廚師食譜,它所做的就是在CentOS機器上設置MOTD。它需要/tmp/mymotd.txt的內容並將其轉換爲MOTD。在廚師食譜中運行任意紅寶石代碼
我還有一個簡單的ruby腳本(一個完整的ruby腳本),它只是從Web服務器讀取文本並放入/tmp/mymotd.txt。
我的問題是:
非常感謝。
廣告1.
您可以使用libraries
目錄中的腳本將有你的Ruby腳本和模塊中聲明它。例如:
# includes
module MODULE_NAME
# here some code using your script
# Example function
def example_function (text)
# some code
end
end
您可以使用再
include MODULE_NAME
在你的食譜導入這些功能,只是使用它像
example_function(something)
好處是什麼 - 你可以使用還有廚師功能和資源。
重要信息:請記住,廚師有2個編譯階段。首先是所有的Ruby代碼,第二是所有的廚師資源。這意味着,你必須記住代碼的優先級。我不會在這裏寫更多關於它的信息,因爲你沒有要求這個,但是如果你想要的話,你可以找到它here。
廣告2.
您可以通過幾種方式做到這一點,但在我看來,對於您的最佳選擇是使用environments
。你可以找到更多信息in here。基本上,您可以在腳本運行之前爲其設置環境 - 這樣您就可以定義稍後使用的一些變量。
希望這會有所幫助。
非常感謝!雖然我無法使用包含MODULE_NAME,所以我搜索了它並發現:Chef :: Recipe.send(:include,MODULE_NAME)會發揮魔力。 –
是的,對不起,我忘了提及這個命令也:)我很高興我可以幫助你! – deem