Назад | Перейти на главную страницу

Установить блокировку версий YUM, но разрешить обновление до определенных версий

Я пытаюсь контролировать версию марионеточного агента, установленную в наших системах 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.