Скажем, у меня есть служба на нескольких серверах, управляемая кластерным способом (пульс), отключенная (при запуске), потому что я хочу, чтобы она запускалась только на активном узле:
haproxy:
service.disabled: []
Я хочу иметь возможность обновить его файл конфигурации:
/etc/haproxy/haproxy.cfg:
file.managed:
- source: salt://haproxy.cfg
- watch_in:
- service: haproxy
Указав, что за этим файлом следит haproxy
service, он вызовет перезапуск службы, если этот файл будет изменен. Это то, что я хотел бы, за исключением того, что эта служба должна работать только для активного сервера в кластере.
Итак, мой вопрос: как я могу достичь своей цели - перезапустить эту службу после изменения конфигурации, не запуская ее на всех пассивных узлах?
Первый вопрос, на который вам нужно ответить:
Как узнать, активен ли текущий узел?
Тогда вместо 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
Не полностью протестирован. Пожалуйста, дайте мне знать, работает ли это для вас.