salt-stack - 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 吗?谢谢
解决方案
pkg.installed
是一个状态模块,因此只在必要时采取行动,即它的行动是幂等的。因此,除非它检测到如下更改,否则它将报告指定的软件包已安装。
- 未安装软件包
- 软件包比安装的软件包新,等等。
坚持这种方法并拥有版本化的包将是一个好习惯,因此当版本更改时(由 Saltstack)更新包。
那就是说...
如果由于某种原因无法做到这一点,那么我们可以使用 salt执行模块 pkg.install
。执行模块每次被调用时都会运行。例子:
install-mypackage:
module.run:
- name: pkg.install
- sources:
- mypackage: salt://files/mypackage-1.0-1.deb
有时这可能是不可取的,因为无论版本或内容是否已更改,这都会安装(在每次运行时)包。
推荐阅读
- assembly - 在 MASM 中反转字符串。得到一个奇怪的输出
- c# - Unity无法让对象查看其他对象?总是面朝左?
- svg - 在谈论图形或 svg 时,什么是用户坐标系
- python - 你如何将浮点数四舍五入到我选择的小数位(python)?
- django - 在 ListView 中获取当前页码
- mysql - 我可以在删除所有旧行(相同的主行除外)之前向 MySQL 添加行吗?
- c# - 如何使用背景图像切换背景颜色
- python - 为什么 Exception 将 __str__ 代理到 args 上?
- redux - Redux-saga setContext 在其他 saga 中不可用
- javascript - Select2 Optgroup 结果集