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.

Petrus Theron
sumber

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
holms
sumber
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
Dan Garthwaite
sumber
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.

berdenting
sumber
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