5

我有这个 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],
    }
}

然后我包含include monit在默认节点中。但是,当我应用此配置时,puppet 并未将 monit 设置为启动服务(使用 chkconfig --list monit 仅显示“关闭”和“关闭”)

但是,如果我运行,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示例中,您没有指定提供程序,因此它会选择最适合您的系统的提供程序 - 在您的情况下是使用chkconfig.

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

于 2011-11-06T12:28:08.277 回答