我们正在使用Salt Stack将我们的应用程序部署为Debian软件包。该应用程序本身是Scala,并使用Java样式版本控制,例如,在开发过程中,版本号保持在1.5.0-SNAPSHOT。但是,程序包本身总是更新的。
问题在于,只有在对该版本进行更新时,才能重新安装Salt堆栈。但对我们来说,版本保持不变,但内容有所变化。
到目前为止,我们一直在通过始终先删除软件包来帮助自己
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支持它。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句