
template CheckCommand "by_ssh_base" {
import "by_ssh"
vars.by_ssh_plugindir = PluginDir
}
var cmdlist = [ "load", ""ntp_time", "yum" ]
for (cmd in cmdlist) {
object CheckCommand "by_ssh_" + cmd use(cmd) {
import cmd
vars.by_ssh_arguments = arguments
arguments = null
vars.by_ssh_command = "$by_ssh_plugindir$/check_" + cmd
import "by_ssh_base"
}
}
Gleiches Verfahren lässt sich auch für das Erzeugen von Services über eine Schleife anwenden. Hier soll sich nun jedoch die Service-Bezeichnung vom verwendenten Check-Command unterscheiden und es kommt kein Array zum Einsatz, sondern ein Dictionary. Das folgende Beispiel ist allerdings für Commands, die via command_endpoint auf einer anderen Icinga-2-Instanz aufgerufen werden.
var srvlist = {
"load" = "load"
"time" = "ntp_time"
"updates" = "yum"
}
for (srv => cmd in srvlist) {
apply Service srv use(cmd) {
import "generic-service"
check_command = cmd
command_endpoint = host.name
assign where host.vars.os == "Linux"
ignore where host.vars.noagent
}
}
Werden im apply-Block mehrere Variablen, z.B. im obigen Beispiel auch srv, kann use durch Komma getrennt mehrere Variablen „weiter reichen“.

























0 Kommentare