Puppet没有添加我的服务来启动

Phư*_*yễn 5 puppet

我有这个puppet模块(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],
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我包含include monit在默认节点内.但是,当我应用这个配置时,puppet没有将monit设置为启动服务(使用chkconfig --list monit只显示'off'和'off')

但是,如果我运行,puppet apply -e 'service { "monit": enable => true, } '则添加monit以正常启动.

我在这做错了吗?(木偶2.7.6)

完整配置可以在https://github.com/phuongnd08/Giasu-puppet上查看

Dom*_*eal 8

问题可能是该provider => init行,它覆盖了处理服务的默认提供程序.init提供程序是一个非常简单的提供程序,它不支持"可启用"功能,因此无法将服务设置为在启动时启动.

有关其功能,请参见http://docs.puppetlabs.com/references/2.7.6/type.html#service.

在您的puppet apply示例中,您没有指定提供程序,因此它选择最适合您的系统 - 在您的情况下使用的是"redhat"提供程序chkconfig.

要解决此问题,请从service {}定义中删除提供程序行,它将再次默认为最合适.如果提取程序选择不正确,您只需指定提供程序,然后最好将其指定为全局默认值.