Chef windows_service资源 - 配置现有服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chef windows_service资源 - 配置现有服务相关的知识,希望对你有一定的参考价值。

我遇到了一些问题,确保在创建Windows服务资源后正确配置它。我正处于由单独的安装程序(.exe)处理服务创建的情况。

我之后需要配置此服务以使用其他用户。

这是我的资源定义:

windows_service 'Service' do
  action [:configure_startup, :start]
  service_name 'service'
  startup_type :automatic
  run_as_user agent_credentials['user']
  run_as_password agent_credentials['password']
  only_if { ::Win32::Service.exists?('myservice') }
end

我正在从加密数据包中提取凭据。

我面临的问题是服务运行的帐户永远不会更新。在我的客户端运行中,它看到安装.exe后不需要应用资源操作:

  * windows_service[Service] action configure_startup (up to date)
  * windows_service[Service] action start (up to date)

如果首先停止服务,我只能获取我的资源,安装后立即停止,但事实并非如此。我是否必须先使用Chef来阻止它然后再次启动它?我以为它能够检测到服务的配置与定义的资源的配置不匹配,然后纠正它...

谢谢

答案

只需将:stop添加到action数组中,例如

windows_service 'Service' do
  action [:configure_startup, :stop, :start]
  service_name 'service'
  startup_type :automatic
  run_as_user agent_credentials['user']
  run_as_password agent_credentials['password']
  only_if { ::Win32::Service.exists?('myservice') }
end

如果即使服务停止服务也没有在停止时失败,那么这应该可以减轻您的痛苦。请注意,您可能需要将:stop放在阵列上的其他位置,具体取决于服务行为。

以上是关于Chef windows_service资源 - 配置现有服务的主要内容,如果未能解决你的问题,请参考以下文章

厨师:为啥跳过“include_recipe”步骤中的资源?

如何使用 Chef 在本地移动/复制文件

将文件从 Chef 客户端节点复制到工作站

如何在chef recipe中包含application.properties文件中的属性

如何卸载 chef-client 和整个 Chef 包

DevOps 自动化运维工具Chef