Я пытаюсь контролировать версию марионеточного агента, установленную в наших системах RedHat.
В нашем манифесте 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'],
}
Это работает для настройки puppet
и он фактически изменяет содержимое файла конфигурации YUM versionlock, но, похоже, не работает, чтобы заставить puppet-agent
усовершенствовать. Я поменял версию с 6.12.0
к 6.16.0
. Теперь при каждом запуске марионетки появляется сообщение об ошибке. 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.