例如我已经安装了 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 中使用。
要在存储库中进行设置,您可以使用以下内容:
- 包括
- 排除
- 优先事项