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.


person Phương Nguyễn    schedule 06.11.2011    source источник


Ответы (1)


Проблема, вероятно, заключается в строке provider => init, которая переопределяет провайдера по умолчанию для обработки служб. Провайдер инициализации — это очень простой провайдер, который не поддерживает функцию «включить», поэтому он не может настроить запуск службы при загрузке.

См. http://docs.puppetlabs.com/references/2.7.6/type.html#service за его возможности.

В вашем примере puppet apply вы не указываете поставщика, поэтому он выбирает наиболее подходящий для вашей системы - в вашем случае поставщик "redhat", который использует chkconfig.

Чтобы исправить это, удалите строку провайдера из вашего определения service {}, и она снова будет по умолчанию наиболее подходящей. Вам нужно указать поставщика только в том случае, если он выбран неправильно, а затем лучше указать его как глобальное значение по умолчанию.

person Dominic Cleal    schedule 06.11.2011
comment
Вы также можете рассмотреть возможность замены /etc/monit.conf на $configdir в первом блоке файлов. В противном случае, если вы позже измените значение $configdir, puppet может обновить файл /etc/monit.conf, чтобы он ссылался на новый каталог, но puppet не будет проверять наличие нового каталога. - person pwan; 15.05.2012