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

Я хотел бы, чтобы служба 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/?


person coffee-grinder    schedule 17.05.2014    source источник
comment
Я никогда не пробовал то, что вы делаете, но мне любопытно, каковы точные параметры монтирования для вашей целевой файловой системы? grep root /proc/mounts   -  person Dan Garthwaite    schedule 18.05.2014
comment
rootfs/рутфс rw 0 0   -  person coffee-grinder    schedule 22.05.2014


Ответы (2)


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

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

person nmadhok    schedule 22.05.2014
comment
Я нахожусь в том же положении, что и ОП, и по той же причине. И я использую решение, подобное тому, которое вы представляете. Но он все еще работает неправильно. В частности, watch запускает перезагрузку только при изменении файла в conf.d, а не при добавлении файла в conf.d. Я думаю. Я все еще пытаюсь отладить это. - person nomen; 24.07.2014

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

person Chris Martin    schedule 31.10.2014
comment
Или, как в конце концов решает ссылка: /path* (без висящей косой черты) - person Jason Holloway; 04.06.2019