根据发行版本安装软件包

时间:2019-10-02 09:05:12

标签: salt-stack

我处于那种状态:

pkg.installed:
- pkgs:
  - libqt4-core
  - libqt4-gui

在这些软件包的名称在新版本中更改之前一直运行良好,现在它可以正常工作

pkg.installed:
  - pkgs:
    - libqtcore4
    - libqtgui4

无论系统版本如何,如何使它工作?

1 个答案:

答案 0 :(得分:0)

存在多种可能性,但是我认为第一步是在状态(处理)和支柱(数据)之间分离代码。 这样,您就可以“注入”状态中的软件包名称,而无需为要支持的每个新发行版或新OS进行更改。

使用支柱的简单选项只是针对您的操作系统或释放(使用颗粒)一个或另一个支柱的使用,例如

# /srv/pillar/top.sls
base:
  'G@release1':
    - release1
  'G@release2':
    - release2

# /srv/pillar/release1.sls
pkgs:
  - libqt4-core
  - libqt4-gui

# /srv/pillar/release2.sls
pkgs:
  - libqtcore4
  - libqtgui4

# /srv/salt/my_state.sls
pkg.installed:
  - pkgs: {{ salt['pillar.get']('pkg', []) }}

更复杂的解决方案是将该状态实现为“公式”,并使用map.jinja来定义不同的选项,具体取决于发行版/ OS /任何版本。有关详细信息,请参见此答案https://serverfault.com/a/957401/61847。这比较复杂,但是有很多好处:隔离特定软件的代码,抽象OS细节,提供合理的默认值支柱以及单独测试该特定公式的可能性。