salt stack if then else 服务
salt stack if then else for service
我有一个 windows 服务,我从 salt 堆栈部署了它。状态是这样的
create_executable:
module.run:
- name: service.create
- m_name: SVC1
- bin_path: d:\svc1.exe
- start_type: auto
现在,当我重新部署服务时,它显示 "Exception: Service Already Exists: SVC1"。有没有办法测试服务是否 运行?如果
服务是 运行,我想停止它、禁用它、删除它然后重新创建它。
使用 unless
功能的 module.wait together with a cmd.run 在这种情况下可能会有所帮助。
您需要一个很好的方法来检查服务 是否未安装 并在 unless 测试中使用它。命令本身可能类似于 echo
- 这并不重要。您现在可以使用 watch
或 watch_in
使 module.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 的品味问题。
我有一个 windows 服务,我从 salt 堆栈部署了它。状态是这样的
create_executable:
module.run:
- name: service.create
- m_name: SVC1
- bin_path: d:\svc1.exe
- start_type: auto
现在,当我重新部署服务时,它显示 "Exception: Service Already Exists: SVC1"。有没有办法测试服务是否 运行?如果 服务是 运行,我想停止它、禁用它、删除它然后重新创建它。
使用 unless
功能的 module.wait together with a cmd.run 在这种情况下可能会有所帮助。
您需要一个很好的方法来检查服务 是否未安装 并在 unless 测试中使用它。命令本身可能类似于 echo
- 这并不重要。您现在可以使用 watch
或 watch_in
使 module.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 的品味问题。