我有一个独特的情况,即 Puppet 包ensure => latest
指令仅适用于我的某些系统。在 30 台服务器中,除了 4 台服务器外,其他所有服务器的软件包都正确更新。我正在尝试将软件套件的主要版本从 < 9.40 升级到 9.50。我可以指定一个硬级别,但我会遇到多架构通配符问题。
清单代码片段:
# Install packages
$spppackages = [ "hp-snmp-agents", "hpssa", "hp-health", "hp-smh-templates", "hpsmh", "hpssacli", "hponcfg", ]
package { $spppackages:
ensure => latest,
require => Yumrepo['HP-spp'],
}
Run Code Online (Sandbox Code Playgroud)
M集体状态:
mco package hp-snmp-agents status
Summary of Ensure:
9.50-2564.40.rhel6 = 14
9.50-2564.34.rhel5 = 9
9.40-2506.37.rhel6 = 4 <== This is what I'm trying to fix!
9.50-2564.35.rhel5 = 1
Run Code Online (Sandbox Code Playgroud)
我已经尝试在受影响的系统上调试这个:
puppet apply --verbose --debug --execute 'package { hp-snmp-agents: ensure …
Run Code Online (Sandbox Code Playgroud) 刚开始使用 Puppet 并使用以下数组和“确保”,因此安装了特定版本的 Apache(而不是最新版本)并“保留”(这意味着它不会按照标准升级apt-get dist-upgrade
到最新版本。
当使用下面的代码时,Puppet 只考虑确保数组中的第一个值。因此,当执行下面的代码时,它会安装正确版本的 Apache,但该包未设置为保留(通过运行检查dpkg --get-selection
)。
如果交换数组中的值,则保留该包但安装最新版本。
package { 'apache2':
ensure => [ "2.0.64", held ],
}
Run Code Online (Sandbox Code Playgroud)
感谢任何关于这个的指针!
谢谢。
所以几周前,我开始使用 puppet 来自动化所有配置/服务。当时我正在使用 EPEL 存储库,它安装了 2.6.x 版。经过一些阅读后,我试图flatten
通过 puppet stdlib访问可用的方法,并认为它在较新的 2.7.x 版本中默认可用。所以我添加了一个具有以下设置的 puppet repo:
[puppetlabs]
name=Puppet Labs Packages
baseurl=http://yum.puppetlabs.com/el/$releasever/products/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs
Run Code Online (Sandbox Code Playgroud)
问题是它安装了 v3.0.x 而不是 2.7.x。显然 3.0.x 是几周前才发布的重大升级。显然,我更愿意在接下来的几个月中使用 2.7.x,而 PuppetLabs 会修复在主要版本之后不可避免地出现的任何缺陷。
所以我的问题是,我可以在 puppet repo 配置中添加什么设置以仅下拉 2.7.x 分支而不是 3.0.x 分支?