簡體   English   中英

如何在CHEF中為資源塊的動作添加條件?

[英]How to add condition on action of a resource block in CHEF?

我創建了一個包含兩個動作的資源。

假設動作:A1和動作:A2。 我能夠在一個資源塊( 測試 )中像這樣調用它們:

test 'Testing the actions' do
    action [:a1 ,:a2]
    only_if {::File.exists?"/tmp/action_exist.txt"}
end

它工作正常,但是如果我想在這樣的動作上添加條件怎么辦

僅檢查動作:A1的條件。 並簡單地執行操作:A2,而不考慮條件。

我這樣嘗試過:

test 'Testing the actions' do
    action [:A1 ,:A2]
    if (action.first=="A1")
            puts "yes"
            only_if {::File.exists?"/tmp/action_exist.txt" }
    end

結束

但這不起作用。 它正在為兩個動作執行此條件

這不是廚師的工作方式。 資源主體不是運行每個動作的腳本。

這取決於在編譯時是否知道條件。 如果條件是在編譯時已知的,則可以編寫如下內容:

test 'Testing the action' do
  if ::File.exists?('/tmp/action_exist.txt')
    action [:A1, :A2]
  else
    action [:A2]
  end
end

但這僅是在您的食譜在運行期間未擺弄/tmp/action_exist.txt情況下。 如果在融合過程中/tmp/action_exist.txt的狀態可能發生變化,那么您可能需要做一些更/tmp/action_exist.txt事情。 例如,您可以通知資源立即在某些資源中執行:A1 這不是我要做的,所以您可能需要試驗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM