Назад | Перейти на главную страницу

марионетка: подписка на службу nagios не работает

Я только что настроил марионетку для создания файлов конфигурации 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 начать с.