2017-10-13 69 views
0

我有幾個服務器廚師管理的每個運行的堆棧:驗證乘客nginx模塊是否已成功編譯的最佳方法?

  • nginx的
  • PHUSION乘客

我想使乘客寶石進行升級,有條件地跳過能力自動化過程乘客nginx模塊編譯意味着我不希望編譯過程發生在每個廚師跑步上,只有在確定它是必要的跑步(通常是因爲乘客寶石版本正在升級,而且在乘客寶石是沒有升級但編譯失敗先前)。

目前我檢查正在運行的乘客版本,但在gem實際安裝到正確版本但編譯失敗的情況下,該冪等檢查過於寬泛,並且在我需要時無法進行編譯嘗試。

什麼是最準確的方式來驗證乘客nginx模塊已編譯?在穩定的位置是否有特定的文件,我可以檢查它的存在?

現在我的廚師塊看起來是這樣的:

execute "compile passenger nginx module" do 
    ruby_vers = node[:ruby][:global_version] 
    passenger_vers = node[:passenger][:version] 
    ruby_parent_vers = node[:ruby_parent_vers] 
    command "export ORIG_PATH=\"$PATH\"; sudo -s -E; export PATH=\"$ORIG_PATH\"; /usr/bin/ruby /usr/lib/ruby/gems/2.4.0/gems/passenger-#{passenger_vers}/bin/passenger-install-nginx-module --auto --auto-download" 
    # check for a difference between passenger version requested and passenger version running 
    not_if { `passenger --version` == cur_vers } 
end 

回答

2

你試過passenger-config about compiled

+0

不,我沒有。不知道它存在!感謝分享。但是,當我嘗試'關於編譯的乘客配置'或'關於nginx-dynamic-compiled的乘客配置'時,兩者都不返回。 – Ben

+0

他們只是「返回」退出代碼。 0爲好/是非0爲壞/沒有。 –

+0

啊,好吧,我看到了,是的,我得到退出代碼0.只需要測試一下,如果我得到一個適當的退出代碼,當它不被編譯。謝謝! – Ben

相關問題