Я только что настроил марионетку для создания файлов конфигурации nagios, и это здорово :) У меня есть службы, помещаемые в файл с именем $nagios_puppet_service_file
и вот часть класса обслуживания nagios:
file { $nagios_puppet_service_file:
ensure => file,
owner => nagios, group => admins, mode => '0664',
notify => Service['nagios'],
}
Nagios_host <<||>>
Nagios_hostextinfo <<||>>
Nagios_service <<||>>
service { 'nagios':
ensure => running,
enable => true,
subscribe => [ File[$nagios_puppet_host_file], File[$nagios_puppet_hostextinfo_file],
File[$nagios_puppet_service_file], ],
hasrestart => true,
hasstatus => true,
}
Хотя одно из моих определений службы выглядит так:
$real_nagios_http_port = $nagios_http_port ? { '' => '80', default => $nagios_http_port }
$real_nagios_http_url = $nagios_http_url ? { '' => '/', default => $nagios_http_url }
$real_nagios_http_addr = $nagios_http_addr ? { '' => $fqdn, default => $nagios_http_addr }
@@nagios_service { "check_http_port_${hostname}":
use => 'generic-service',
check_command => "check_http_port!$real_nagios_http_addr!$real_nagios_http_port!$real_nagios_http_url",
service_description => 'HTTP service',
host_name => $hostname,
target => $nagios_puppet_service_file,
}
Таким образом, служебный файл создается правильно, но служба nagios не перезапускается, несмотря на subscribe
пункт в служебной части выше. (Ну, иногда он перезапускается, когда права доступа к файлу обновляются, но это не всегда происходит при запуске марионетки, а иногда происходит на полпути во время запуска марионетки, поэтому загружаются только некоторые изменения, несмотря на то, что все они находятся в файл служб.)
Есть идеи, почему предложение о подписке не работает должным образом? Могу ли я каким-то образом подписаться на все экземпляры nagios_service? Будет ли лучше работать уведомление в бите nagios_service?
Содержимое файла не контролируется file
заявление, которое имеет notify
. Вы должны поставить notify
на nagios_service
.
И пока нет способа сделать service
подписаться на все nagios_service
, вы можете сделать наоборот вот так:
Nagios_service <<||>> { notify => Service['nagios'] }
Но я не вижу причин для этого notify
атрибут не должен быть определен в экспортированных экземплярах nagios_service
начать с.