我正在尝试控制安装在我们的 RedHat 系统上的 puppet 代理的版本。
我们的 Puppet 清单有
$puppet_version = hiera('profile::puppet_agent::version', '6.12.0')
class {'::puppet_agent':
collection => 'puppet6',
package_version => $puppet_version,
service_names => [], # Don't start puppet service
msi_move_locked_files => true,
manage_pki_dir => false,
}
# This is required on RedHat 7 only
$puppet_release = $::osreleasemaj ? {
'7' => '*.el7.*',
default => undef,
}
yum::versionlock { 'puppet-agent':
ensure => present,
version => $puppet_version,
release => $puppet_release,
before => Class['Puppet_agent'],
}
这对 configure 有效puppet
,它实际上会更改 YUM versionlock 配置文件的内容,但似乎无法强制puppet-agent
升级。我将版本从 更改6.12.0
为6.16.0
。现在每次 puppet 运行都会失败并显示错误消息Could not update: Failed to update to version 6.16.0, got version 6.12.0-1.el7 instead
。
在 RHEL 7 上,/etc/yum/pluginconf.d/versionlock.list
包含:
# File managed by puppet
0:puppet-agent-6.16.0-*.el7.*
在 RHEL 8 上,/etc/yum/pluginconf.d/versionlock.list
包含:
# File managed by puppet
0:puppet-agent-0:6.16.0-*
我的理解是,它yum versionlock
并不关心文件中列出的版本 - 只关心包名称。
我研究了 Puppet 是否可以在同一个代理运行中清除版本锁、运行更新并再次设置版本锁,但我找不到任何方法来实现这一点。
还有其他方法可以做到这一点吗?
我们正在运行 RHEL7 和 RHEL8,并使用官方 Puppet YUM 存储库。