Очистить каталог с файлом состояния соли


11

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

Следующая top.slsконфигурация не имеет никакого эффекта:

/etc/supervisor/conf.d/*:
  file.absent

file.remove не может быть недоступным.

Ответы:


10

Была такая же проблема, как у вас. Вот что сработало для меня.

remove-supervisord-confd:
   file.directory:
      - name: /etc/supervisord/conf.d/           
      - clean: True

4

Не идеальный ответ, но вы можете использовать file.absent в каталоге, а затем воссоздать его. Обратите внимание, что это будет удалять каталог при каждом запуске состояния. Вы можете получить фантазию с условным условием дзиндзя:

supervisor-conf-delete:
  file.absent:
    - name: /etc/supervisord/conf.d

supervisor-conf-create:
  file.directory:
    - name: /etc/supervisord/conf.d
    - user: root
    - group: root
    - mode: 0755
    - require:
        - file: supervisor-conf-delete

1

Вы можете использовать модуль cmd в солевых состояниях. В вашем файле состояния может присутствовать следующий код:

rm -f /etc/supervisord/conf.d/*.conf:
    cmd.run

Вы также можете написать более сложные команды, если хотите.


Спасибо, это сделало бы это, но это не очень-то чувствительно. Любая идея, почему файл .absent не будет работать? Может быть, он не понимает подстановочные знаки. Или, может быть, directoryмодуль с отсутствующей функцией будет более подходящим?
Петрус Терон

Я не вижу, как «directory.absent» был бы более состоящим, чем команда, которая имеет состояния. Если вам нужно иметь состояние, просто введите его в свой скрипт оболочки, как требуется: docs.saltstack.com/en/latest/ref/states/all/…
noamik
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.