Wyczyść katalog z plikiem stanu soli

11

Jak wyczyścić katalog na stworach soli przy użyciu pliku stanu? Chcę usunąć wszystkie *.confpliki /etc/supervisord/conf.d/przed skonfigurowaniem innych usług nadzorczych.

Następująca top.slskonfiguracja nie ma wpływu:

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

file.remove kończy się niepowodzeniem, ponieważ jest niedostępny.

Petrus Theron
źródło

Odpowiedzi:

10

Miałem ten sam problem co ty. To działało dla mnie.

remove-supervisord-confd:
   file.directory:
      - name: /etc/supervisord/conf.d/           
      - clean: True
holms
źródło
4

Nie jest to idealna odpowiedź, ale możesz użyć file.absent w katalogu, a następnie odtworzyć go. Zauważ, że spowoduje to usunięcie katalogu przy każdym uruchomieniu stanu. Możesz mieć ochotę na warunek jinja otaczający następujące elementy:

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
Dan Garthwaite
źródło
1

Możesz użyć modułu cmd w stanach soli. W pliku stanu może znajdować się następujący kod:

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

Możesz także pisać bardziej skomplikowane polecenia, jeśli chcesz.

zakodowane
źródło
Dzięki, to by to zrobiło, ale nie wydaje się bardzo stanowe. Wiesz, dlaczego file.absent nie działa? Może nie rozumie symboli wieloznacznych. A może directorymoduł z nieobecną funkcją byłby bardziej odpowiedni?
Petrus Theron
Nie rozumiem, w jaki sposób „directory.absent” byłby bardziej stanowy niż uruchomienie komendy zawierające stany. Jeśli potrzebujesz stanu, po prostu wprowadź
noamik