【问题标题】:How to deploy custom rpms on to salt-minion?如何将自定义 rpm 部署到 salt-minion?
【发布时间】:2021-07-26 12:25:47
【问题描述】:

我正在研究 salt-stack 以设置多台机器,我想问一下我们如何将 rpms(放置在 master 中的自定义位置)部署到 minions 上?我已经知道我们如何使用 top.sls 文件和需要安装在 minions 上的软件包的名称来安装软件包,但我正在寻找的是从 master 将我的自定义 rpms 部署到 minions 上。

【问题讨论】:

  • 您尝试过show the code 通常是一个好习惯(有问题)。对于初学者,请查看pkg state,特别是pkg.installed 函数。
  • 实际上,我想了解的是,如果多个 rpm 被放置在 master 的某个位置,我们如何使用 pkg.installed 将这些 rpm 安装到 minions。我已经阅读了来自 stackoverflow.com/questions/44593704/… 的参考,但它不起作用。
  • 出于您的目的,您应该使用pkg.installed 模块的sources: 选项。你说的不起作用是什么意思?问题中更新的任何错误、输出等将不胜感激。
  • 感谢@seshadri_c 的回复在我的情况下,所有要安装的 RPMS 都放在一个目录中,并且在源代码中:选项我们需要提供文件的确切名称,以防万一将来我的 RPM 名称会更改,例如从 my-rpm-5.7.1-1 到 my-rpm-5.7.2-2 我必须在脚本中再次进行更改,而不是我想在 my-rpm*.rpm 等源中提供正则表达式,是否可以以任何方式做到这一点,谢谢

标签: version-control salt-stack salt-cloud


【解决方案1】:

有两种方法可以解决这个问题:

选项 1:

pillar 文件中定义 RPM 列表:

package_names:
  - custom-rpm1: custom-rpm1-2.6.1-2.el7.x86_64.rpm
  - custom-rpm2: custom-rpm2-release-el7-3.noarch.rpm
  - custom-rpm3: custom-rpm3-latest.noarch.rpm

然后在 SLS 文件中:

install-rpm:
  pkg.installed:
  - sources: {{ pillar['package_names'] }}

选项 2:

将包含 RPM 的目录(下例中的salt://rpms 相对于file_roots)复制到目标机器并使用rpm 命令安装(使用通配符):

copy-rpms-dir:
  file.recurse:
    - name: /tmp/rpms
    - source: salt://rpms

install-rpms:
  cmd.run:
    - name: rpm -ivh /tmp/rpms/*.rpm
    - success_retcodes:
      - 2

使用rpm 命令安装需要额外检查返回码,因为它在已安装 RPM 时返回非零 (2)。

【讨论】:

  • 感谢您的回答,但我们不是还在支柱文件中提供确切的名称,所以每次新版本的 RPM 出现时,我们可能不得不更改支柱,对吗?我们不能在这里提供一个正则表达式,这样我们就不需要再次编辑文件了吗?
  • 你见过选项2吗?如果您真的想使用通配符,这可能会更好。
  • 是的,我已经尝试过选项 2,它运行良好,如果某些奴才不在线,它会失败。我之所以要使用方法1来使用Salt配置管理(sls状态文件)。
  • 如果你想使用Salt配置管理功能,你应该知道pillar,并且无需编辑文件即可传递pillar值。
猜你喜欢
  • 2013-05-10
  • 2016-11-14
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 2018-06-11
  • 2021-06-20
  • 1970-01-01
  • 2017-11-13
相关资源
最近更新 更多