Directory
如何確保只有鹽管理的文件保留在目錄中並保持差異清潔?
假設這樣的目錄:
- etc/nginx/sites-available/ - hostA - hostB - hostC
hostA和hostB是由 salt 創建的**。**hostC**也是由 salt 更早創建的,但此後它已從支柱中刪除並且不再需要。我希望目錄只包含代表目前狀態的文件。可以選擇使用. 這使得檢查發生的變化變得非常困難。有沒有辦法解決這個問題?
clean: True
更新:目前輸出(偽 yaml)
- directory - deleted: - file: hostA - file: hostB - file: hostC - file - new file: hostA - file - new file: hostB
我希望
- directory: - deleted: - file: hostC
你可以通過呼叫
file.find
模組來獲取你想要的目錄列表,並且由於你有一個你想要管理的文件列表,你可以刪除不在要管理的文件列表中的文件。這是一些改編自我必須管理 /etc/yum.repos.d 的狀態文件的程式碼。我將假設您要管理的文件來自支柱,它們是字典的鍵,其值是渲染文件的其餘數據。
{% set site_dir = '/etc/nginx/sites-available/' %} {% set sites = salt['pillar.get']('nginx_sites',{}) %} {% set site_files = salt['file.find'](site_dir,type='f',print='name',maxdepth=0) %} {% for site_file in site_files %} {% if site_file not in sites %} delete-old-{{ site_file }}: file.absent: - name: {{ site_dir }}/{{ site_file }} {% endif %} {% endfor %} {# then go through the sites and manage the files... #} {% for site in sites %} manage-site-file-{{ site_file }}: file.managed: - name: {{ site_dir }}/{{ site }} - source: salt://nginx/files/site-file.conf - template: jinja {% endfor %}