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

时间:2016-05-03 09:33:11

标签: 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:
  - sources:
    - my-app: salt://my-app-1-5-0-SNAPSHOT.deb

但是这总是重新安装,所以state.highstate总是会触发更改。还有另外一种方法,在debian上使用dpkg / pkg来升级相同的版本号,当且仅当内容改变了吗?

我们还检查了pkg状态的验证标志(如果有任何文件发生更改,它基本上也会安装),但是没有工作,文档也说只有yum支持它。

1 个答案:

答案 0 :(得分:2)

onchanges必备条件仅在依赖状态发生更改时才运行状态。因此,我会保留.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