我有我想说的厨师配方使用正则表达式语句:如果红宝石(厨师配方)
“如果服务器的主机名-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它显示您当前的模式是正确的,所以问题在别处。 –