У меня есть рецепт шеф-повара, в котором я пытаюсь сказать:Если оператор с использованием регулярных выражений в Ruby (Chef рецепт)
«Если имя хоста сервера заканчивается в -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 "]', которое соответствует тому, где они не должны? Вы можете добавить имя хоста «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. Кажется, ваш текущий шаблон правильный, поэтому проблема в другом месте. –