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 の方法。(1 つまたは 2 つある場合... 少なくとも独自のリポジトリを維持できると読みましたが、上記で推測したような純粋な Puppet 構文はありますか?)
  • 明らかに PHP 以外のパッケージもありますが、異なるリポジトリからのパッケージや、RHEL/CentOS 以外のディストリビューションのパッケージなどを Puppet を使用して管理するにはどうすればよいでしょうか。
  • 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 }

これにより、更新があるかどうかがすべてのパペット実行でチェックされます。

また、システムに新しい PHP パッケージを提供する追加のリポジトリを使用しない場合、ensure => latestCentOS がパッケージを更新する方法により、システムは希望どおりに動作します。CentOS 7 には php-5.5 は含まれませんが、php は 5.4 シリーズのままです。5.5 以降の更新は、php55、php56 などを通じて提供されます。つまり、必要なバージョンを反映するように、puppet マニフェストのパッケージ名を変更する必要があります。例:

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

したがって、答えは「いいえ」です。リポジトリが必要なメジャー バージョンのみを提供していることを確認してから、ensure => latestPuppet 内で使用する必要があります。

リポジトリでこれを設定するには、次のようなものを使用できます。

  • 含む
  • 除外する
  • 優先度

関連情報