Cancella directory con file Salt State


11

Come posso cancellare una directory su un salt-minion usando un file di stato? Voglio eliminare tutti i *.conffile /etc/supervisord/conf.d/prima di impostare altri servizi di supervisore.

La seguente top.slsconfigurazione non ha alcun effetto:

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

file.remove non è disponibile.

Risposte:


10

Ho avuto lo stesso problema con te. Questo è ciò che ha funzionato per me.

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

4

Non è una risposta perfetta, ma è possibile utilizzare file.absent nella directory, quindi ricrearlo. Si noti che ciò eliminerà la directory ogni volta che viene eseguito lo stato. Potresti divertirti con un condizionale jinja che circonda quanto segue:

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

È possibile utilizzare il modulo cmd negli stati salt. Il seguente codice potrebbe essere presente nel file di stato:

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

Se lo desideri, puoi anche scrivere comandi più complicati.


Grazie, lo farebbe, ma non sembra molto di stato. Qualche idea sul perché il file.absent non funzionerebbe? Forse non capisce i caratteri jolly. O forse un directorymodulo con una funzione assente sarebbe più appropriato?
Petrus Theron,

Non vedo come "directory.absent" sarebbe più stato di un'esecuzione di comando che ha stati. Se è necessario disporre di uno stato, è sufficiente introdurli nello script della shell come richiesto: docs.saltstack.com/en/latest/ref/states/all/…
noamik
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.