Verzeichnis mit Salt State-Datei löschen

11

Wie lösche ich ein Verzeichnis auf einem Salt-Minion mithilfe einer Statusdatei? Ich möchte alle *.confDateien löschen, /etc/supervisord/conf.d/bevor ich andere Supervisor-Dienste einrichte.

Die folgende top.slsKonfiguration hat keine Auswirkung:

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

file.remove schlägt als nicht verfügbar fehl.

Petrus Theron
quelle

Antworten:

10

Hatte das gleiche Problem wie Sie. Das hat bei mir funktioniert.

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

Keine perfekte Antwort, aber Sie könnten file.absent für das Verzeichnis verwenden und es dann neu erstellen. Beachten Sie, dass dadurch das Verzeichnis jedes Mal gelöscht wird, wenn der Status ausgeführt wird. Sie könnten Lust auf eine Jinja-Bedingung bekommen, die Folgendes umgibt:

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
quelle
1

Sie können das cmd-Modul in Salt-Zuständen verwenden. Der folgende Code könnte in Ihrer Statusdatei vorhanden sein:

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

Sie können auch kompliziertere Befehle schreiben, wenn Sie dies wünschen.

pincoded
quelle
Danke, das würde es tun, aber es fühlt sich nicht sehr zustandsbehaftet an. Irgendeine Idee, warum die Datei file.absent nicht funktionieren würde? Vielleicht versteht es keine Platzhalter. Oder wäre vielleicht ein directoryModul mit fehlender Funktion besser geeignet?
Petrus Theron
Ich sehe nicht, wie "directory.absent" mehr statusbehaftet wäre als ein Befehlslauf mit Status. Wenn Sie einen Status benötigen, führen Sie ihn einfach nach Bedarf in Ihr Shell-Skript ein: docs.saltstack.com/de/latest/ref/states/all/…
noamik