X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=build-nagios;h=e7bc540041fc3ba769f186e337452c63e1a8a22c;hb=933c6407f0b213ac1179c09c8829fe6a4cab4708;hp=482357fdcd5c0edc9babb00597c019aca1073b5e;hpb=5224b1ec9299c9304984ff299c4dfd81860f4551;p=mirror%2Fdsa-nagios.git diff --git a/build-nagios b/build-nagios index 482357f..e7bc540 100755 --- a/build-nagios +++ b/build-nagios @@ -9,7 +9,7 @@ SHORTORG="dsa" GENERATED_PREFIX="./generated/" nagios_filename = {}; -%w(hosts hostgroups services dependencies hostextinfo serviceextinfo).each{ +%w(hosts hostgroups services dependencies hostextinfo serviceextinfo servicegroups).each{ |x| nagios_filename[x] = GENERATED_PREFIX+"auto-#{x}.cfg" } nagios_filename['nrpe'] = GENERATED_PREFIX+"nrpe_#{ ORG }.cfg" @@ -120,10 +120,9 @@ end # Add the service definition service to hosts # f is the file for service definitions, deps the file for dependencies -def addService(hosts, service, files) +def addService(hosts, service, files, servers) set_if_unset service, 'use' , SERVICE_TEMPLATE_NAME - set_complain_if_set service, 'host_name' , hosts.join(',') , 'Service', service['service_description'] set_if_unset service, 'max_check_attempts', MAX_CHECK_ATTEMPTS_DEFAULT service['max_check_attempts'] = MAX_CHECK_ATTEMPTS_DEFAULT + service['max_check_attempts'] if service['max_check_attempts'] < 0 @@ -139,9 +138,17 @@ def addService(hosts, service, files) service['depends'] << NRPE_PROCESS_SERVICE unless service['service_description'] == NRPE_PROCESS_SERVICE # Depend on NRPE unless we are it end - print_block files['services'], 'service', service, %w(nrpe runfrom remotecheck - depends - hosts hostgroups excludehosts excludehostgroups) + hosts.each{ |host| + s = service.clone + set_complain_if_set s, 'host_name', host, 'Service', s['service_description'] + %w{contacts contact_groups}.each{ |k| + set_if_unset(s, k, servers[host][k]) if servers[host].has_key? k + } + + print_block files['services'], 'service', s, %w(nrpe runfrom remotecheck + depends + hosts hostgroups excludehosts excludehostgroups) + } if service['depends'] service['depends'].each{ |prerequisite| @@ -272,6 +279,8 @@ config['servers'].each_pair{ |name, server| }; } +config['servicegroups'] = {} unless config.has_key? 'servicegroups' + ############## # HOSTS ############## @@ -386,17 +395,28 @@ config['services'].each{ |service| # And append this new dependency hostservice['depends'] << "#{ relay }:#{ NRPE_PROCESS_SERVICE }"; - addService( [ host ], hostservice, files) + addService( [ host ], hostservice, files, config['servers']) } elsif service['runfrom'] || service['remotecheck'] throw "runfrom and remotecheck must either appear both or not at all in service #{service['service_description']}" throw "must not remotecheck without runfrom" if service['remotecheck'] else - addService(hosts, service, files) + addService(hosts, service, files, config['servers']) end } + +############## +# SERVICEGROUPS +############## +config['servicegroups'].each_pair{ |name, sg| + set_complain_if_set sg, 'servicegroup_name', name , 'Servicegroup', name + + print_block files['servicegroups'], 'servicegroup', sg, %w() +} + + ############## # NRPE config file ##############