12

How do I clear a directory on a salt-minion using a state file? I want to delete all *.conf files in /etc/supervisord/conf.d/ before I set up other supervisor services.

The following top.sls configuration has no effect:

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

file.remove fails as being unavailable.

Petrus Theron
  • 1,541
  • 5
  • 16
  • 24

3 Answers3

11

Had same issue as you. That's what worked for me.

remove-supervisord-confd:
   file.directory:
      - name: /etc/supervisord/conf.d/           
      - clean: True
holms
  • 1,464
  • 7
  • 20
  • 37
4

Not a perfect answer, but you could use file.absent on the directory, then recreate it. Note that this will delete the dir every time the state is run. You could get fancy with a jinja conditional surrounding the following:

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
  • 2,922
  • 18
  • 29
1

You can use the cmd module in salt states. The following code could be present in your state file:

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

You can also write more complicated commands if you wish.

pincoded
  • 359
  • 2
  • 9
  • Thanks, that would do it, but it doesn't feel very stateful. Any idea why the file.absent would not work? Maybe it doesn't understand wildcards. Or perhaps a `directory` module with an absent function would be more appropriate? – Petrus Theron Aug 05 '13 at 12:41
  • I don't see how "directory.absent" would be anymore stateful than a command run that has states. If you need to have a state, just introduce them in your shell script as required: http://docs.saltstack.com/en/latest/ref/states/all/salt.states.cmd.html – noamik Jun 20 '14 at 15:41