как поручить saltstack перезагрузить firewalld?

Я пытаюсь настроить firewalld через файл состояния saltstack (на Centos7). Я могу просто добавить службы в постоянную конфигурацию, но это действительно входит в «постоянную» конфигурацию, а не в текущую. Таким образом, требуется либо перезагрузка, либо (менее опционально) добавление тех же служб в текущую конфигурацию.

Что я использовал для добавления сервиса:

public: firewalld.present: - name: public - services: - http Это работает, но только навсегда.

Я пытался добавить «часы», но это вообще не сработает:

firewalld: service.running: - watch: - file: /etc/firewalld/zones/public.xml Ошибка:

Comment: The following requisites were not found: watch: file: /etc/firewalld/zones/public.xml

Так что же можно сделать? Как я могу дать команду перезагрузить службу через файл состояния?


person SWTM    schedule 11.04.2016    source источник
comment
watch просто ищет изменения, он не создает отсутствующий файл. Пожалуйста, проверьте, где вы храните файл public.xml. При необходимости добавьте состояние копирования.   -  person mootmoot    schedule 11.04.2016
comment
использование onchanges теперь является предпочтительным способом вместо часов. Отличное объяснение для обоих находится на github.com/saltstack/salt/issues/29492. #issuecomment-162967147   -  person savamane    schedule 11.04.2016
comment
Обратите внимание, что в SaltStack именем состояния по умолчанию является идентификатор состояния, поэтому вы можете опустить - name: public, если ваш идентификатор равен public.   -  person Dereckson    schedule 23.03.2018


Ответы (1)


Вы были близки. Вы не можете смотреть файл непосредственно в файловой системе. Вы можете только наблюдать за другим состоянием соли. Итак, ваш пример будет выглядеть так:

public:
  firewalld.present:
    - name: public
    - services:
      - http

firewalld:
  service.running:
    - watch:
      - firewalld: public

Это означает, что состояние service.running будет искать изменения в состоянии firewalld.present и перезапустит firewalld, если изменения произошли.

Если вы хотите reload против полного перезапуска, это должно работать:

public:
  firewalld.present:
    - name: public
    - services:
      - http

firewalld:
  service.running:
    - reload: True
    - watch:
      - firewalld: public

Вот документы по состоянию службы: https://docs.saltstack.com/en/latest/ref/states/all/salt.states.service.html

person Utah_Dave    schedule 11.04.2016
comment
Спасибо Дейв за правильное решение. Однако один вопрос. Вы сказали, что я не могу смотреть файл в файле. system Это ограничение солей firewalld-module? - person SWTM; 12.04.2016
comment
Пожалуйста! Вы можете наблюдать за состоянием, управляющим файлом в файловой системе. Например, если вы управляете /etc/my.cnf с помощью file.managed, вы можете наблюдать за тем состоянием, которое управляет этим файлом. Это не относится к модулю firewalld. - person Utah_Dave; 12.04.2016
comment
Не забудьте добавить prune_services: False, если вы хотите, чтобы другие службы добавлялись по другим правилам, если вы управляете своим брандмауэром с точки зрения службы, а не с точки зрения сети. - person Dereckson; 23.03.2018