
たとえば、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 => latest
CentOS がパッケージを更新する方法により、システムは希望どおりに動作します。CentOS 7 には php-5.5 は含まれませんが、php は 5.4 シリーズのままです。5.5 以降の更新は、php55、php56 などを通じて提供されます。つまり、必要なバージョンを反映するように、puppet マニフェストのパッケージ名を変更する必要があります。例:
package { 'php56-fpm': ensure => latest }
したがって、答えは「いいえ」です。リポジトリが必要なメジャー バージョンのみを提供していることを確認してから、ensure => latest
Puppet 内で使用する必要があります。
リポジトリでこれを設定するには、次のようなものを使用できます。
- 含む
- 除外する
- 優先度