Ubuntu SaltStack-在版本未更改时如何重新安装软件包

Ubuntu SaltStack-在版本未更改时如何重新安装软件包,ubuntu,debian,package,salt-stack,Ubuntu,Debian,Package,Salt Stack,我们正在使用salt stack将我们的应用程序部署为debian包。应用程序本身是Scala,使用Java风格的版本控制,例如,在开发过程中,版本号保持在1.5.0-SNAPSHOT。但是包本身总是更新的 问题是salt stack只有在版本更新时才重新安装。但对我们来说,版本保持不变,但内容有所变化 到目前为止,我们一直在帮助自己,总是先拆下包装 my-app-removed: pkg.removed: - name: my-app my-app: pkg.installed:

我们正在使用salt stack将我们的应用程序部署为debian包。应用程序本身是Scala,使用Java风格的版本控制,例如,在开发过程中,版本号保持在1.5.0-SNAPSHOT。但是包本身总是更新的

问题是salt stack只有在版本更新时才重新安装。但对我们来说,版本保持不变,但内容有所变化

到目前为止,我们一直在帮助自己,总是先拆下包装

my-app-removed:   pkg.removed:
  - name: my-app

my-app:   pkg.installed:
  - sources:
    - my-app: salt://my-app-1-5-0-SNAPSHOT.deb
但这总是会重新安装,因此state.highstate总是会触发更改。有没有另一种方法,让debian上的dpkg/pkg也升级相同的版本号,前提是内容发生了变化


我们还检查了pkg状态的verify标志(如果任何文件发生更改,它基本上也会安装),但这不起作用,文档还说目前只有yum支持它。

onchangesrequirement仅在依赖状态发生更改时才运行状态。因此,我将保留.deb文件的本地缓存,并检测它何时更改,并且仅在文件更改时删除pkg。(您还可以从本地缓存的文件进行安装。)

snapshot-deb-file:
  file.managed:
    - name: /var/cache/my-app-1-5-0-SNAPSHOT.deb
    - source: salt://my-app-1-5-0-SNAPSHOT.deb

my-app-removed:
  pkg.removed:
    - name: my-app
    - onchanges:
      - file: snapshot-deb-file

my-app:   
  pkg.installed:
    - sources:
      - my-app: /var/cache/my-app-1-5-0-SNAPSHOT.deb