[英]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.