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.

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

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

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.