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.

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

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

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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.