我在确保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停止它,然后再重新启动它吗?我认为它将能够检测到该服务的配置与所定义资源的配置不匹配,然后对其进行纠正...
谢谢
答案 0 :(得分:0)
只需将: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
放置在阵列上的其他位置。
答案 1 :(得分:0)
我的情况与DL3001所述相同,发现解决方案不够。
第二次应用停止启动操作可以解决问题,但这似乎很尴尬,而且不够优雅。
windows_service 'Configure_service' do
service_name 'service'
run_as_user app_vault['username']
run_as_password app_vault['password']
startup_type :automatic
action [:configure_startup, :stop, :start]
end
windows_service 'Restart_service' do
service_name 'service'
action [:stop, :start]
end