Bersihkan Direktori dengan File Status Garam


11

Bagaimana cara menghapus direktori pada minion garam menggunakan file negara? Saya ingin menghapus semua *.conffile /etc/supervisord/conf.d/sebelum saya mengatur layanan pengawas lainnya.

top.slsKonfigurasi berikut tidak berpengaruh:

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

file.remove gagal karena tidak tersedia.

Jawaban:


10

Punya masalah yang sama seperti Anda. Itu yang berhasil untuk saya.

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

4

Bukan jawaban yang sempurna, tetapi Anda bisa menggunakan file.abent pada direktori, lalu membuatnya kembali. Perhatikan bahwa ini akan menghapus dir setiap kali negara dijalankan. Anda bisa menyukai jinja bersyarat seputar hal berikut:

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

Anda dapat menggunakan modul cmd dalam kondisi garam. Kode berikut dapat hadir dalam file negara Anda:

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

Anda juga dapat menulis perintah yang lebih rumit jika diinginkan.


Terima kasih, itu akan berhasil, tetapi tidak terasa terlalu keras. Tahu mengapa file.abent tidak berfungsi? Mungkin tidak mengerti wildcard. Atau mungkin directorymodul dengan fungsi absen akan lebih sesuai?
Petrus Theron

Saya tidak melihat bagaimana "directory.abent" akan lebih stateful daripada menjalankan perintah yang memiliki status. Jika Anda perlu memiliki status, cukup perkenalkan mereka dalam skrip shell Anda seperti yang dipersyaratkan: docs.saltstack.com/en/latest/ref/states/all/…
noamik
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.