在一个配方中,我想检查是否安装了服务,以及是否通知了安装它所需的3个资源。我尝试了服务资源,它在安装时正确识别服务,但如果未安装服务则抛出异常。
我不确定在这里使用什么动作。 :没有什么只是跳过资源以便它被执行,但是当他们试图对不存在的服务进行操作时,任何其他操作都会出错。
如何检测服务是否已安装并根据该信息执行操作?
我在Windows上运行,如果相关的话。
答案 0 :(得分:9)
了解如何定义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?。