假设我有几个服务器上的服务,以集群方式(心跳)控制,禁用(启动时),因为我希望它只在主动节点上运行:
haproxy: service.disabled: []
我想能够更新其configuration文件:
/etc/haproxy/haproxy.cfg: file.managed: - source: salt://haproxy.cfg - watch_in: - service: haproxy
通过指定这个文件被haproxy服务监视,如果这个文件被修改,它将触发服务重启。 这是我想要的,除了这个服务应该只运行在集群中的活动服务器。
所以我的问题是:我怎样才能实现我的目标,重新启动configuration修改服务,而不必在所有被动节点上启动它?
你必须回答的第一个问题是:
你怎么知道当前节点是否活动?
然后,而不是watch_in service状态,您可以使用cmd状态与onlyif条件,如下所示:
haproxy: pkg: - installed file: - managed - name: /etc/haproxy/haproxy.cfg - source: salt://haproxy/config.cfg - require: - pkg: haproxy - watch_in: - cmd: haproxy cmd: - run - name: /etc/init.d/haproxy restart - onlyif: /this/node/is/the/active
没有完全testing。 请让我知道,如果它适合你。