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/
на?
Ответы
Ответ 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/*
должны смотреть рекурсивно.