Borrar directorio con archivo de estado de sal

11

¿Cómo borro un directorio en un salt-minion usando un archivo de estado? Quiero eliminar todos los *.confarchivos /etc/supervisord/conf.d/antes de configurar otros servicios de supervisión.

La siguiente top.slsconfiguración no tiene ningún efecto:

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

file.remove falla por no estar disponible.

Petrus Theron
fuente

Respuestas:

10

Tuve el mismo problema que tú. Eso fue lo que funcionó para mí.

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

No es una respuesta perfecta, pero puede usar file.absent en el directorio y luego volver a crearlo. Tenga en cuenta que esto eliminará el directorio cada vez que se ejecute el estado. Podrías ponerte elegante con un jinja condicional que rodea lo siguiente:

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

Puede usar el módulo cmd en estados salinos. El siguiente código podría estar presente en su archivo de estado:

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

También puede escribir comandos más complicados si lo desea.

revestido
fuente
Gracias, eso lo haría, pero no se siente muy acertado. ¿Alguna idea de por qué el archivo. Ausente no funcionaría? Tal vez no entienda los comodines. ¿O tal vez un directorymódulo con una función ausente sería más apropiado?
Petrus Theron
No veo cómo "directorio.absent" sería más con estado que un comando ejecutado que tiene estados. Si necesita tener un estado, simplemente introdúzcalos
noamik