首页 > 解决方案 > saltstack 从 salt://files/ 安装新版本的软件包

问题描述

使用 salt 3003.1,假设名称和版本相同,从 salt://files/ 安装新版本包的最佳方法是什么?

我在下面有这个配置,但是如果我在不更改版本的情况下放了一个新包,它就不会捡起来。

mypackage:
  pkg.installed:
    - reinstall: False
    - source: salt://files/{{ pillar['env'] }}/deb/{{ pillar['mypackagelatest'] }}
  service.running:
    - enable: True
    - require:
      - file: /etc/mypackage/mypackage.toml
    - watch:
      - file: /etc/mypackage/mypackage.toml

或者,我可以使用简单的 https 链接,而不是 repo 吗?谢谢

标签: salt-stackdebian-packaging

解决方案


pkg.installed是一个状态模块,因此只在必要时采取行动,即它的行动是幂等的。因此,除非它检测到如下更改,否则它将报告指定的软件包已安装。

  • 未安装软件包
  • 软件包比安装的软件包新,等等。

坚持这种方法并拥有版本化的包将是一个好习惯,因此当版本更改时(由 Saltstack)更新包。

那就是说...

如果由于某种原因无法做到这一点,那么我们可以使用 salt执行模块 pkg.install。执行模块每次被调用时都会运行。例子:

install-mypackage:
  module.run:
    - name: pkg.install
    - sources:
        - mypackage: salt://files/mypackage-1.0-1.deb

有时这可能是不可取的,因为无论版本或内容是否已更改,这都会安装(在每次运行时)包。


推荐阅读