【问题标题】:SaltStack - How to reinstall package when version did not changeSaltStack - 版本未更改时如何重新安装软件包
【发布时间】:2016-05-05 08:17:54
【问题描述】:

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

问题是盐栈只有在版本更新时才会重新安装。但对我们来说,版本保持不变,但内容发生了变化。

到目前为止,我们总是先删除包来帮助自己

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 支持它。

【问题讨论】:

    标签: ubuntu debian package salt-stack


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多