Limpar diretório com arquivo de estado de sal


11

Como limpo um diretório em um salt-minion usando um arquivo de estado? Quero excluir todos os *.confarquivos /etc/supervisord/conf.d/antes de configurar outros serviços de supervisor.

A seguinte top.slsconfiguração não tem efeito:

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

file.remove falha como indisponível.

Respostas:


10

Teve o mesmo problema que você. Foi o que funcionou para mim.

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

4

Não é uma resposta perfeita, mas você pode usar file.absent no diretório e, em seguida, recriá-lo. Observe que isso excluirá o dir toda vez que o estado for executado. Você pode gostar de um condicional jinja em torno do seguinte:

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

Você pode usar o módulo cmd nos estados salt. O código a seguir pode estar presente no seu arquivo de estado:

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

Você também pode escrever comandos mais complicados, se desejar.


Obrigado, isso faria isso, mas não parece muito estável. Alguma idéia de por que o file.absent não funcionaria? Talvez não entenda curingas. Ou talvez um directorymódulo com uma função ausente seja mais apropriado?
Petrus Theron

Não vejo como "directory.absent" seria mais stateful do que um comando executado com estados. Se você precisa ter um estado, apenas apresentá-los em seu script shell conforme necessário: docs.saltstack.com/en/latest/ref/states/all/...
noamik
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.