我有我想說的廚師配方使用正則表達式語句:如果紅寶石(廚師配方)
「如果服務器的主機名-1結束,然後啓用並啓動newrelic- sysmond和newrelic-daemon服務,否則禁用這些服務「
使用RegEx確定主機名是否以-1結尾。
使用我下面的嘗試,服務似乎啓用並啓動,無論主機名以-1結束還是不結束。我是很新的Ruby和廚師,所以如果我的代碼不正確,我也不會驚訝:
if node["hostname"] =~ /^.*-1$/
service 'newrelic-sysmond' do
action [ :enable, :start ]
end
service 'newrelic-daemon' do
action [ :enable, :start ]
end
else
service 'newrelic-sysmond' do
action [ :disable ]
end
service 'newrelic-daemon' do
action [ :disable ]
end
end
「node [」hostname「]'value的任何示例都與它們不應該匹配的地方匹配?你可以在你調試之前添加一個'Chef :: Log.warn「測試主機名:#{node ['hostname']}」',看看它在測試什麼。 (你的代碼對我來說似乎沒問題) – Tensibai
這段代碼是你的運行列表中唯一的代碼嗎?也許還有另一個地方定義了相同的服務資源。 (在這種情況下,您應該倒帶它而不是重新定義它,請參閱https://docs.chef.io/dsl_recipe.html#edit-resource) – Tensibai
「...確定主機名是否以-1結尾......」然後使用'node [「hostname」]。end_with?(「 - 1」)'。它比你的正則表達式更快,更清晰。如果你堅持使用正則表達式,那麼'/ -1 $ /'就足夠清晰了。請參閱http://rubular.com/r/E5trSWP2lf和http://rubular.com/r/jVOu4hD6Re它顯示您當前的模式是正確的,所以問題在別處。 –