设置 YUM 版本锁,但允许更新到特定版本

设置 YUM 版本锁,但允许更新到特定版本

我正在尝试控制安装在我们的 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.06.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 存储库。

相关内容