Change from a module config file to brute force locating the nagios configs so we can find the command file.
This commit is contained in:
parent
7d5b965b32
commit
a176180693
1 changed files with 36 additions and 25 deletions
61
nagios
61
nagios
|
@ -31,44 +31,50 @@ Action Summaries (all must be delegate_to'd a nagios server):
|
|||
action: nagios action=enable_alerts service=host host=$inventory_hostname
|
||||
action: nagios action=disable_alerts services=httpd,git,nfs host=$inventory_hostname
|
||||
|
||||
Note: 'service' is an alias for 'services'. Separate multiple services
|
||||
with commas.
|
||||
|
||||
Note: 'service' is an alias for 'services'.
|
||||
Separate multiple services with commas.
|
||||
|
||||
|
||||
Configuration:
|
||||
|
||||
If your nagios cmdfile is not /var/spool/nagios/cmd/nagios.cmd you
|
||||
can configure ansible (on your nagios server) to use the correct
|
||||
one by making a file called /etc/ansible/modules/nagios.conf that
|
||||
looks like this:
|
||||
|
||||
[main]
|
||||
cmdfile = /path/to/your/nagios.cmd
|
||||
|
||||
When calling this module via ansible, use the 'cmdfile' parameter to
|
||||
set it explicitly.
|
||||
Set the path to the command file explicitly with the 'cmdfile'
|
||||
parameter.
|
||||
"""
|
||||
|
||||
|
||||
import ConfigParser
|
||||
import types
|
||||
import time
|
||||
|
||||
MODULE_CONFIG = '/etc/ansible/modules/nagios.conf'
|
||||
DEFAULT_CMDFILE = '/var/spool/nagios/cmd/nagios.cmd'
|
||||
import os.path
|
||||
|
||||
######################################################################
|
||||
|
||||
|
||||
def which_cmdfile():
|
||||
try:
|
||||
config = ConfigParser.SafeConfigParser({'cmdfile': DEFAULT_CMDFILE})
|
||||
config.read(MODULE_CONFIG)
|
||||
return config.get('main', 'cmdfile')
|
||||
except:
|
||||
return DEFAULT_CMDFILE
|
||||
locations = [
|
||||
# rhel
|
||||
'/etc/nagios/nagios.cfg',
|
||||
# debian
|
||||
'/etc/nagios3/nagios.cfg',
|
||||
# older debian
|
||||
'/etc/nagios2/nagios.cfg',
|
||||
# bsd, solaris
|
||||
'/usr/local/etc/nagios/nagios.cfg',
|
||||
# groundwork it monitoring
|
||||
'/usr/local/groundwork/nagios/etc/nagios.cfg',
|
||||
# open monitoring distribution
|
||||
'/omd/sites/oppy/tmp/nagios/nagios.cfg',
|
||||
# ???
|
||||
'/usr/local/nagios/etc/nagios.cfg',
|
||||
'/usr/local/nagios/nagios.cfg',
|
||||
'/opt/nagios/etc/nagios.cfg',
|
||||
'/opt/nagios/nagios.cfg'
|
||||
]
|
||||
|
||||
for path in locations:
|
||||
if os.path.exists(path):
|
||||
for line in open(path):
|
||||
if line.startswith('command_file'):
|
||||
return line.partition('=')[2].strip()
|
||||
|
||||
return None
|
||||
|
||||
######################################################################
|
||||
|
||||
|
@ -96,6 +102,7 @@ def main():
|
|||
action = module.params['action']
|
||||
minutes = module.params['minutes']
|
||||
services = module.params['services']
|
||||
cmdfile = module.params['cmdfile']
|
||||
|
||||
##################################################################
|
||||
# Required args per action:
|
||||
|
@ -124,6 +131,10 @@ def main():
|
|||
if not services:
|
||||
module.fail_json(msg='a service is required when setting alerts')
|
||||
|
||||
##################################################################
|
||||
if not cmdfile:
|
||||
module.fail_json('unable to locate nagios.cfg')
|
||||
|
||||
##################################################################
|
||||
ansible_nagios = Nagios(module, **module.params)
|
||||
ansible_nagios.act()
|
||||
|
|
Loading…
Reference in a new issue