我使用以下方式提供捆綁的軟件項目,鹽爪牙:如何僅在鹽中改變文件時才傳輸文件?
proj-archive:
cmd:
- run
- name: "/bin/tar -zxf /home/myhome/Proj.tgz -C {{ proj_dir }}"
- require:
- file: /home/myhome/Proj.tgz
- {{ proj_dir }}
file:
- managed
- user: someone
- group: someone
- mode: '0600'
- makedirs: True
- name: /home/myhome/Proj.tgz
- source: salt://Proj.tgz
據我所知,它的工作,但這些規則總是有效的,即使存檔沒有改變。這會帶來不必要的部署延遲。在類似情況下,例如,使用文件watch
子句重新啓動服務時,可能會在文件更改時重新啓動。如何告訴salt只有在網絡發生變化時才通過網絡複製文件?有沒有自動的方法來做到這一點?
Proj.tgz
在鹽目錄中是一個符號鏈接文件的位置,如果它很重要。
archive.extracted
不是很有用,因爲它不會在文件內發生更改時觸發,也不會在存檔中添加或刪除文件。
一些相關信息https://github.com/saltstack/salt/issues/40484,但我不確定分辨率/解決方法。
不錯!但是,這需要'source_hash'才能工作。那麼,我是否應該維護一些散列文件呢? –
難道他們不是自己計算哈希值嗎?也許和'keep'參數一起不要刪除本地存檔? – dahrens
我加了'source_hash'和'skip_verify'。似乎唯一的變化是現在正在更新所有權... –