6
在配方中,我想检查一下服务是否已安装,以及是否未通知安装它所需的3个资源。我尝试了服务资源,它在安装时正确识别服务,但如果服务未安装,则会引发异常。厨师:我如何检查服务是否安装?
我不确定在这里使用什么动作。 :没有任何东西只是跳过资源以便执行,但其他任何操作都会在尝试操作不存在的服务时出错。
如何检测服务是否已安装并根据该信息采取行动?
我在Windows上运行,如果这是相关的。
在配方中,我想检查一下服务是否已安装,以及是否未通知安装它所需的3个资源。我尝试了服务资源,它在安装时正确识别服务,但如果服务未安装,则会引发异常。厨师:我如何检查服务是否安装?
我不确定在这里使用什么动作。 :没有任何东西只是跳过资源以便执行,但其他任何操作都会在尝试操作不存在的服务时出错。
如何检测服务是否已安装并根据该信息采取行动?
我在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 ?.
这让我走上了正轨。我没有要求声明就可以工作。通过此邮件列表条目:http://lists.opscode.com/sympa/arc/chef/2013-03/msg00223.html 陈述 'if!:: Win32 :: Service.exists?(“test_service_name”) “ 正确检测服务是否存在。领先::告诉它不要在厨师名字空间看。 – CPS
@Gadolin您可以添加CPS评论的语法吗? –