Hello, The if/else construct you’re using is evaluated when the CheckCommand is instantiated - i.e. when Icinga starts and parses its config. „vars.servertype“ actually refers to the CheckCommand’s custom variables.
If you want the if/else to be evaluated for each check you’re going to have to use a lambda function, like so: object CheckCommand "check_timezone" { import „nrpe-common" command = [ PluginDir + "/check_nrpe", "-H", "$host.address$", "-c", "check_timezone" ] arguments += { "-a" = {{ if (host.vars.servertype in [ "cassandra", "rabbit", "mq", "redis" ]) { var tz_permanent = "UTC" var tz_seasonal_comma = "UTC" var localtime_hash = "c79354b8dbee09e62bbc3fb544853283" } else { var tz_permanent = "America/New_York" var tz_seasonal_comma = "EST,EDT" var localtime_hash = "e4ca381035a34b7a852184cc0dd89baa" } return tz_permanent + " " + tz_seasonal_comma + " " + localtime_hash }} "-t" = "$timeout$" } } Does that feel overly complicated to you? Because… well, it should. Ideally you should keep as much domain-specific knowledge out of the CheckCommand definitions as possible. A far better - and easier - way would be to use host templates: template Host „utc-server“ { vars.tz_permanent = "UTC" vars.tz_seasonal_comma = "UTC" vars.localtime_hash = "c79354b8dbee09e62bbc3fb544853283" } template Host „est-server“ { vars.tz_permanent = "America/New_York" vars.tz_seasonal_comma = "EST,EDT" vars.localtime_hash = "e4ca381035a34b7a852184cc0dd89baa" } template Host „mq-server“ { import „utc-server“ vars.servertype = „mq“ } /* Additional templates for cassandra, rabbit, redis, etc. */ object Host „mq-server-001“ { import „mq-server" } Kind regards, Gunnar Beutner On 16/01/16 19:32, "icinga-users on behalf of Rob DeSanno" <icinga-users-boun...@lists.icinga.org on behalf of rdesa...@icloud.com> wrote: > >I’m trying to wrap my head around using if/else conditions for my >CheckCommands but I can’t seem to get it to work. In this example, most of my >servers timezone is set to EST whereas only a handful (cassandra, rabbit, mq, >and redis) are set to UTC. > > >How can I reconfigure this check to pass the correct variables based on the >servertype defined in hosts.conf? I suspect that these checks are not picking >up either set of variables but having a hard time figuring out how it should >be set. > > >Any thoughts? > > > > >object CheckCommand "check_timezone" { > import "nrpe-common" > command = [ PluginDir + "/check_nrpe", "-H", "$host.address$", "-c", > "check_timezone" ] > > > arguments += { > "-a" = "$tz_permanent$ $tz_seasonal_comma$ $localtime_hash$" > "-t" = "$timeout$" > } > > > if ( vars.servertype == "cassandra" || vars.servertype == "rabbit" || > vars.servertype == “mq" || vars.servertype == "redis" ) { > vars.tz_permanent = "UTC" > vars.tz_seasonal_comma = "UTC" > vars.localtime_hash = "c79354b8dbee09e62bbc3fb544853283" > } else { > vars.tz_permanent = "America/New_York" > vars.tz_seasonal_comma = "EST,EDT" > vars.localtime_hash = "e4ca381035a34b7a852184cc0dd89baa" > } >} > > >apply Service "check_timezone" { > import "generic-service" > display_name = "timezone" > check_command = "check_timezone" > > > vars += { > "timeout" = "30" > } > > > assign where host.vars.servertype in [ … ] > > -- Gunnar Beutner Senior Developer NETWAYS GmbH | Deutschherrnstr. 15-19 | D-90429 Nuernberg Tel: +49 911 92885-0 | Fax: +49 911 92885-77 CEO: Julian Hein, Bernd Erk | AG Nuernberg HRB18461 http://www.netways.de | gunnar.beut...@netways.de ** OSDC 2016 - April - netways.de/osdc ** ** OSBConf 2016 - September - osbconf.org ** _______________________________________________ icinga-users mailing list icinga-users@lists.icinga.org https://lists.icinga.org/mailman/listinfo/icinga-users