я использую file.replace и хотелось бы использовать это не для отдельного файла, а для списка файлов. Список файлов получается из подстановки.
Пример: я хочу изменить /etc/ImageMagick*/policy.xml
.
Файл может быть /etc/ImageMagick-6/policy.xml
или /etc/ImageMagick/policy.xml
или ...
AFAIK "name" в "file.replace" может быть только одним именем файла.
Как решить эту проблему с солью?
Связанное обсуждение в списке пользователей соли: https://groups.google.com/forum/#!topic/salt-users/75OpiflpObA
Вы можете сделать это в два этапа:
file.find
file.replace
к каждому файлу в этом списке Примечание: это всего лишь методика достижения вашей цели, у меня нет готового технического решения для вас.
Это сработает:
/etc/foo.test:
file.managed:
- source: salt://tmp/dummy
{% for file in salt['cmd.run']('ls -1 /etc/foo*.test').splitlines() %}
{{ file }}_dummy_to_real:
file.replace:
- name: {{ file }}
- pattern: dummy
- repl: hitme
{% endfor %}
Но это работает, только если /etc/foo.test
уже существует до того, как соль начнет выполняться.
Если /etc/foo.test
создается во время того же солевого прогона, тогда это не удастся.