Effacer le répertoire avec le fichier d'état du sel


11

Comment effacer un répertoire sur un sel-minion en utilisant un fichier d'état? Je souhaite supprimer tous les *.conffichiers /etc/supervisord/conf.d/avant de configurer d'autres services de superviseur.

La top.slsconfiguration suivante n'a aucun effet:

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

file.remove échoue car non disponible.

Réponses:


10

J'ai eu le même problème que vous. C'est ce qui a fonctionné pour moi.

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

4

Pas une réponse parfaite, mais vous pouvez utiliser file.absent sur le répertoire, puis le recréer. Notez que cela supprimera le répertoire à chaque exécution de l'état. Vous pourriez avoir envie d'un jinja conditionnel entourant les éléments suivants:

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

Vous pouvez utiliser le module cmd dans les états de sel. Le code suivant peut être présent dans votre fichier d'état:

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

Vous pouvez également écrire des commandes plus compliquées si vous le souhaitez.


Merci, ça le ferait, mais ça ne semble pas très dynamique. Une idée pourquoi le fichier.absent ne fonctionnerait pas? Peut-être qu'il ne comprend pas les caractères génériques. Ou peut-être qu'un directorymodule avec une fonction absente serait plus approprié?
Petrus Theron

Je ne vois pas comment "directory.absent" serait plus dynamique qu'avec une commande exécutée avec des états. Si vous avez besoin d'un état, introduisez-les simplement dans votre script shell comme requis: docs.saltstack.com/en/latest/ref/states/all/…
noamik
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.