盐堆栈,如果其他服务

时间:2016-12-28 19:24:22

标签: salt-stack

我有一个从盐栈部署的Windows服务。州看起来像这样

create_executable:
   module.run:
     -  name:  service.create
     -  m_name:  SVC1
     -  bin_path:  d:\svc1.exe
     -  start_type:  auto

现在,当我重新部署服务时,它会说"异常:服务已经存在:SVC1"。有没有办法测试服务是否正在运行?如果是 服务正在运行,我想停止它,禁用它,删除它然后重新创建它。

1 个答案:

答案 0 :(得分:1)

在这种情况下,使用unless功能的module.waitcmd.run可能会有所帮助。

您需要一种很好的方法来检查服务是否未安装,并在除非测试中使用它。命令本身可能类似于echo - 这并不重要。您现在可以使用watchwatch_inmodule.wait依赖cmd.run

未经测试的草稿(请注意,我根本不知道Windows cli):

check_if_service_installed:
  cmd.run:
    name: echo 'not installed'
    unless: 'if exists c:\svc1.exe'

create_executable:
  module.wait:
    - name:  service.create
    - m_name:  SVC1
    - bin_path:  d:\svc1.exe
    - start_type:  auto
    - watch:
      - cmd: check_if_service_installed

写完之后我觉得这对你想要达到的目标来说有点复杂。也许一个小批量或PowerShell脚本负责能够再次执行更直接。但这是IMO的品味问题。