如何在国家改变时触发行动?

时间:2018-03-12 12:53:26

标签: salt-stack

到目前为止,我正在使用salt测试ansible作为管理系统。

当状态发生变化时,如何触发操作(特别是服务重新加载)?

在Ansible中,这是通过notify完成的,但浏览salt文档我找不到任何相似内容。

  • 我找到了watch,它反之亦然:"检查一下,如果它改为这个"

  • 还有listen似乎更接近我的需求(文档提到服务重新加载)但我不能把它们放在一起。

要设置示例,以下方案如何在salt中起作用:检查git repo(如果不存在则创建它,否则从中拉出),如果已更改,则重新加载服务? Ansible等价物是

- name: clone my service
  git:
    clone: yes
    dest: /opt/myservice
    repo: http://git.example.com/myservice.git
    version: master
    force: yes
  notify:
    - restart my service if needed

- name: restart my service if needed
  systemd:
    name: myservice
    state: restarted
    enabled: True
    daemon_reload: yes

1 个答案:

答案 0 :(得分:1)

你的例子:

ok 1 - The type 'Str' can do the method 'Str'
ok 2 - The type 'Foo' can do the method 'Str'
ok 3 - The type 'Bar' can do the method 'Str'
not ok 4 -
ok 5 -
1..5
# Failed test at /Users/brian/Desktop/hello.p6 line 12
# expected: 'Foo'
#      got: 'Mu'
# Looks like you failed 1 test of 5

当repo会有变化时(第一次克隆,更新等) 国家将被标记为"有变化"因此,依赖国家 - 在这种情况下ensure my service: git.latest: - name: http://git.example.com/myservice.git - target: /opt/myservice service.running: - watch: - git: http://git.example.com/myservice.git - 将需要更改,service.running表示重新启动

salt quickstart

涵盖了您的要求