在一个配方中,我想检查一下是否安装了一个服务,如果它没有通知安装它所需的3个资源。 我尝试了服务资源,该服务资源在安装时正确识别服务,但是如果服务未安装,则会引发exception。
我不确定在这里使用什么行动。 :没有任何东西只是跳过资源,以便执行,但是当其他任何操作尝试对不存在的服务执行操作时都会出错。
如何检测服务是否已安装并根据这些信息采取行动?
我在Windows上运行,如果这是相关的。
看看如何定义Windows服务
https://github.com/opscode/chef/blob/master/lib/chef/provider/service/windows.rb
AFAIU非常直接地加入你的食谱:
require 'win32/service'
然后你可以检查服务是否存在
Win32::Service.exists?(@new_resource.service_name)
瞧 – 你可以把图书馆( http://docs.opscode.com/essentials_cookbook_libraries.html )只是不污染配方代码,并有简单的方法service_exists?