2015-10-10 98 views
0

我有一個簡單的廚師食譜,它所做的就是在CentOS機器上設置MOTD。它需要/tmp/mymotd.txt的內容並將其轉換爲MOTD。在廚師食譜中運行任意紅寶石代碼

我還有一個簡單的ruby腳本(一個完整的ruby腳本),它只是從Web服務器讀取文本並放入/tmp/mymotd.txt。

我的問題是:

  1. 如何從食譜中運行這個Ruby腳本?
  2. 我怎麼事先通過一些參數傳遞給腳本(例如網絡服務器的地址)

非常感謝。

回答

1

廣告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。基本上,您可以在腳本運行之前爲其設置環境 - 這樣您就可以定義稍後使用的一些變量。

希望這會有所幫助。

+0

非常感謝!雖然我無法使用包含MODULE_NAME,所以我搜索了它並發現:Chef :: Recipe.send(:include,MODULE_NAME)會發揮魔力。 –

+0

是的,對不起,我忘了提及這個命令也:)我很高興我可以幫助你! – deem