Например, у меня установлен php-fpm:
Name : php-fpm
Arch : x86_64
Version : 5.4.16
Release : 23.el7_0.3
Size : 4.5 M
Repo : installed
From repo : updates
Summary : PHP FastCGI Process Manager
URL : http://www.php.net/
License : PHP and Zend and BSD
Наша цель - оставить PHP в последней версии 5.4. В настоящее время у меня есть это в манифесте: ensure => '5.4.16-23.el7_0.3',
.
Это не будет обновляться, если выйдет новая версия или выпуск, хотя я не хочу, чтобы он неожиданно обновлялся до 5.5.
Я пробовал следующее:
ensure => '5.4.16',
ensure => '5.4',
ensure => '5.4.16-*',
ensure => '5.4.*',
Все это дает мне что-то похожее на:
change from 5.4.16-23.el7_0.3 to 5.4 failed: Could not update: Failed to update to version 5.4, got version 5.4.16-23.el7_0.3 instead
Это на RHEL / CentOS, вероятно, соответствует требованию просто иметь ensure => latest,
для PHP я просто использую PHP в качестве примера. Я все еще хочу знать:
Я использую Puppet 3.7.5 с открытым исходным кодом на RHEL / CentOS 7.
Нет, марионетка не может обновиться до последней минорной версии, но может гарантировать только определенную версию или может гарантировать наличие пакета или последнюю версию.
Что вам нужно сделать, так это создать свои собственные настраиваемые репозитории, в которых будут только пакеты, соответствующие вашей релевантности (например, серия PHP 5.4), а затем в марионетке просто установите:
package { 'php-fpm': ensure => latest }
Это будет проверять каждый запуск марионетки на наличие обновлений.
Кроме того, если вы не используете дополнительные репозитории, которые предлагают новые пакеты PHP для вашей системы, ensure => latest
будет вести себя именно так, как вы этого хотите - из-за того, как CentOS обновляет свои пакеты. В CentOS 7 никогда не будет php-5.5, но php останется на уровне 5.4. 5.5 и любые более новые обновления будут предоставляться через php55, php56 и т. Д. - это означает, что вам нужно будет изменить имя пакета в манифесте марионетки, чтобы отразить нужную версию, например:
package { 'php56-fpm': ensure => latest }
Итак, ответ НЕТ, вы должны убедиться, что ваши репозитории предлагают только основную версию, которую вы хотите, и тогда вы можете использовать ensure => latest
внутри марионетки.
Чтобы настроить это в репозиториях, вы можете использовать такие вещи, как: