ล้างไดเรกทอรีด้วยไฟล์ Salt State


11

ฉันจะล้างไดเร็กทอรีบน salt-minion โดยใช้ไฟล์สถานะได้อย่างไร? ฉันต้องการลบ*.confไฟล์ทั้งหมด/etc/supervisord/conf.d/ก่อนที่จะตั้งค่าบริการผู้ดูแลอื่น ๆ

การtop.slsกำหนดค่าต่อไปนี้ไม่มีผลกระทบ:

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

file.remove ล้มเหลวเนื่องจากไม่พร้อมใช้งาน

คำตอบ:


10

มีปัญหาเช่นเดียวกับคุณ นั่นคือสิ่งที่ได้ผลสำหรับฉัน

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

4

ไม่ใช่คำตอบที่สมบูรณ์แบบ แต่คุณสามารถใช้ file.absent ในไดเรกทอรีแล้วสร้างใหม่ โปรดทราบว่าจะเป็นการลบ dir ทุกครั้งที่มีการเรียกใช้สถานะ คุณสามารถจินตนาการด้วย jinja เงื่อนไขโดยรอบต่อไปนี้:

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

คุณสามารถใช้โมดูล cmd ในสถานะเกลือ รหัสต่อไปนี้อาจมีอยู่ในแฟ้มสถานะของคุณ:

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

คุณสามารถเขียนคำสั่งที่ซับซ้อนมากขึ้นได้หากต้องการ


ขอบคุณที่ทำเช่นนั้น แต่มันไม่รู้สึกว่าเป็นเรื่องรัฐ ความคิดใด ๆ ที่ว่าทำไม file.absent จะไม่ทำงาน? อาจไม่เข้าใจสัญลักษณ์แทน หรือบางทีdirectoryโมดูลที่มีฟังก์ชั่นที่ขาดหายไปจะเหมาะสมกว่าหรือไม่
Petrus Theron

ฉันไม่เห็นว่า "directory.absent" จะมีสถานะเป็นอย่างไรอีกต่อไปกว่าการรันคำสั่งที่มีสถานะ หากคุณจำเป็นต้องมีสถานะเป็นเพียงการแนะนำให้พวกเขาในสคริปต์เปลือกของคุณตามต้องการ: docs.saltstack.com/en/latest/ref/states/all/...
noamik
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.