を使用して文は私が言うことをしようとしているれているシェフのレシピを持っている場合:Rubyで正規表現(シェフのレシピ)
「サーバのホスト名が-1で終わる場合、newrelic-を有効にして開始それ以外の場合は、これらのサービスを無効にしてください。
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を参照してください。現在のパターンが正しいので、問題は他の場所にあります。 –