Подтвердить что ты не робот

SaltStack: В инструкции watch, как мне указать каталог, в котором должны просматриваться все файлы?

Я хотел бы, чтобы служба nginx перезапускалась всякий раз, когда был создан или изменен какой-либо файл в каталоге /etc/nginx/conf.d.

В этом каталоге есть несколько файлов, и вместо того, чтобы указывать определенные файлы, я хотел бы следить за всеми изменениями.

Я пробовал это:

nginx:
  pkg.installed:
    - name: nginx
  service:
    - running
    - enable: True
    - restart: True
    - watch:
      - file: /etc/nginx/nginx.conf
      - file: /etc/nginx/conf.d
      - pkg: nginx

но строка - file: /etc/nginx/conf.d не делает то, что я хочу.

Это ошибка:

      ID: nginx
Function: service.running
  Result: False
 Comment: The following requisites were not found:
                             watch:
                                 file: /etc/nginx/conf.d
 Changes: 

Я также пробовал несколько вариантов, включая конечную косую черту, но никто из них не работает.

Что следует изменить - file: /etc/nginx/conf.d/ на?

4b9b3361

Ответ 1

Я использую glob для сопоставления:

file: /etc/nginx/conf.d/*

Здесь скорректированный фрагмент:

nginx:
  pkg.installed:
    - name: nginx
  service:
    - running
    - enable: True
    - restart: True
    - watch:
      - file: /etc/nginx/nginx.conf
      - file: /etc/nginx/conf.d/*
      - pkg: nginx

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

Если это не работает для вас, попробуйте ссылаться на следующую ссылку для другого решения: http://intothesaltmine.org/blog/html/2012/12/18/using_watch_with_file_recurse.html

Ответ 2

Согласно issue 663, закрытой в феврале 2012 года, часы на /path/* должны смотреть рекурсивно.