Puppet 可以将更新包更新至最新的次要版本吗?

Puppet 可以将更新包更新至最新的次要版本吗?

例如我已经安装了 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 上,这可能满足 PHP 的要求ensure => latest,,我只是以 PHP 为例。我仍然想知道:

  • 使用 puppet 方式管理次要版本。(如果有一个或两个……我读到至少你可以维护自己的 repo,但是是否有像我上面猜的那样的纯 puppet 语法?)
  • 显然,除了 PHP 之外还有其他软件包,您将如何使用 puppet 来管理来自不同 repo 的软件包,或者可能来自 RHEL/CentOS 以外的发行版的软件包等等。
  • 我从 puppet 参考中读到,确保“值可以匹配 /./”,那是正则表达式还是什么?http://docs.puppetlabs.com/references/3.7.5/type.html#package-attribute-ensure

我在 RHEL/CentOS 7 上运行开源 Puppet 3.7.5。

答案1

不,puppet 无法更新到最新的次要版本,但只能确保特定版本,或者可以确保包存在,或者是最新的。

您应该做的是创建您自己的自定义存储库,其中只包含与您相关的包(例如 PHP 5.4 系列),然后在 puppet 中设置:

package { 'php-fpm': ensure => latest }

这将检查每次运行的 Puppet 是否有更新。

此外,如果您不使用为您的系统提供较新 PHP 软件包的其他存储库,ensure => latest它将完全按照您的意愿运行 - 这是因为 CentOS 更新其软件包的方式。CentOS 7 中永远不会有 php-5.5,但 php 将保留在 5.4 系列。5.5 和任何较新的更新将通过 php55、php56 等提供 - 这意味着您必须更改 puppet 清单中的软件包名称以反映您想要的版本,例如:

package { 'php56-fpm': ensure => latest }

所以,答案是否定的,你必须确保你的存储库只提供你想要的主要版本,然后你就可以ensure => latest在 puppet 中使用。

要在存储库中进行设置,您可以使用以下内容:

  • 包括
  • 排除
  • 优先事项

相关内容