puppet:nagios 服务订阅不起作用

puppet:nagios 服务订阅不起作用

我刚刚设置了 puppet 来生成 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上述服务部分中有子句。(好吧,有时它会在文件权限更新时重新启动,但这并不总是在 puppet 运行时发生,有时会在 puppet 运行过程中发生,因此只有一些更改会被加载,尽管它们都在服务文件中。)

知道为什么 subscribe 子句没有按预期工作吗?我可以通过某种方式订阅所有 nagios_service 实例吗?nagios_service 位中的通知会更好吗?

答案1

文件的内容不受file带有 的语句的控制notify。您应该notify加上nagios_service

虽然没有办法service订阅所有内容nagios_service,但您可以反过来做,如下所示:

Nagios_service <<||>> { notify => Service['nagios'] }

但我认为没有理由notify不在导出的实例上定义这个属性nagios_service

相关内容