web-dev-qa-db-ja.com

ワイルドカードを使用できますか?複数のリリースバージョンを確実にカバーするパペットパッケージです

Puppetを使用して、(CentOS 5および6サーバー)のパッケージを制御された方法で更新したいと思います。したがって、私はensure=>latestではなく、ensure=>3.0.1-1を使用したいと思います。

例:

class puppet::installation inherits puppet {
        package { "puppet":
            ensure => "3.0.1-1",
        }
}

アップデートは正常に機能しますが、パペットエージェントは違いがあると不平を言い続けます。

/Stage[main]/Puppet::Installation/Package[puppet]/ensure: current_value 3.0.1-1.el6, should be 3.0.1-1 (noop)

確認ルールを3.0.1-1.el6に変更することでこれを解決できますが、それよりもCentOS5では機能しません。

これを解決するための短くてクリーンな方法はありますか、それとも、os-releaseversionに依存する個別のルールを作成する必要がありますか?.

私は解決策を探していましたが、この特定の質問に関連するものは何も見つかりませんでした。

関連する例への提案や参照をいただければ幸いです。

5

次のようなcaseステートメントで変数を設定する必要があります。

class puppet::installation inherits puppet {

        case $::operatingsystemrelease {
            '5':     { $puppet_ver = '3.0.1-1'}
            default: { $puppet_ver = '3.0.1-1.el6'}
        }

        package { 'puppet':
            ensure => $puppet_ver,
        }
}

ただし、この種のロジックにはparams.ppファイルを使用することをお勧めします。ここでparams.ppについて読んでください: http://www.example42.com/?q=understandExample42PuppetModules

4
robbyt

Puppetには、このための機能はまだありません(実際には必要ですが)。

yum-versionlock yumプラグインを使用して特定のRPMパッケージを特定のバージョンでロックし、puppetを使用してバージョンロック構成を制御します。

その他の回避策については、 この関連する質問 を参照してください。

2
Michael Hampton

実際、ワイルドカード文字を使用して、オペレーティングシステムに関係なく特定のバージョンのPythonをインストールできました。pythonのパッケージコードは次のとおりです。

package {
    "python-dev": ensure => "2.7.3*";
    "python-setuptools": ensure => installed;
    "python-pip": ensure => installed;
    "libxml2-dev": ensure => installed;
    "libxslt-dev": ensure => installed;
}

2.7.3 *をensureバージョンとして使用することで、python 2.7.3-0ubuntu2.2をvagrantVMにインストールしました。Puppetバージョン2.7.19を使用しています。

1
Chad Palmer