5

私はこのパペットモジュール(monit)を持っており、monitサービスを有効にすることを宣言しています(別名、マシンの起動時に開始されます)

class monit {
    $configdir = "/etc/monit.d"

    package {
        "monit": ensure => installed;
    }

    service { "monit":
        ensure => running,
        enable => true,
        require => Package["monit"],
        provider => init;
    }

    file {
        '/etc/monit.d':
            ensure => directory;
        '/etc/monit.conf':
            content => template('monit/monitrc.erb'),
            mode => 0600,
            group => root,
            require => File['/etc/monit.d'],
            before => Service[monit],
            notify => Service[monit],
    }
}

次に、include monitデフォルトノード内に含めました。ただし、この構成を適用すると、パペットは monit を起動サービスとして設定しません (chkconfig --list monit を使用して、'off' と 'off' を表示するだけです)。

ただし、実行puppet apply -e 'service { "monit": enable => true, } 'すると正しく起動するように monit が追加されます。

ここで何か間違ったことをしていますか?(パペット 2.7.6)

完全な設定はhttps://github.com/phuongnd08/Giasu-puppetで見ることができます

4

1 に答える 1

8

問題はおそらく、provider => initサービスを処理するためのデフォルトのプロバイダーをオーバーライドしている行です。init プロバイダーは、「有効化」機能をサポートしていない非常に単純なプロバイダーであるため、起動時にサービスを開始するように設定することはできません。

その機能については、 http://docs.puppetlabs.com/references/2.7.6/type.html#serviceを参照してください。

あなたのpuppet apply例では、プロバイダーを指定していないため、システムに最も適したものを選択します。あなたの場合は、を使用する「redhat」プロバイダーですchkconfig

これを修正するには、プロバイダーの行をservice {}定義から削除すると、デフォルトで最も適切なものになります。プロバイダーが正しく選択されない場合にのみプロバイダーを指定する必要があり、それをグローバルな既定値として指定することをお勧めします。

于 2011-11-06T12:28:08.277 に答える