如何声明变量并在 icinga2 主机部分重用它?

How to declare a variable and reuse it in icinga2 hosts section?

现在我使用以下配置让 Icinga2 主机服务器工作:

vars.health_check["my_module1"]={
   host = "HEALTH_CHECK_SERVER_URL"
   module = "my_module1"
}

vars.health_check["my_module2"]={
   host = "HEALTH_CHECK_SERVER_URL"
   module = "my_module2"
}

如您所见,问题是我必须重新声明相同的主机地址。当我像下面这样将主机地址置于服务之外时,它不起作用并且 Icinga2 的重新加载失败:

   end_url = "HEALTH_CHECK_SERVER_URL"
   vars.health_check["my_module1"]={
       host = "$end_url$"
       module = "my_module1"
    }

    vars.health_check["my_module2"]={
       host = "$end_url$"
       module = "my_module2"
    }

我什至尝试使用 vars.end_url 但还是同样的场景。我应该如何在 Icinga2.

中声明一个变量

您可以将主机地址与 $address$ 一起使用,因此如果主机地址是 URL 解析的内容,它应该像这样工作:

end_url = "HEALTH_CHECK_SERVER_URL"
   vars.health_check["my_module1"]={
       host = "$address$"
       module = "my_module1"
    }

    vars.health_check["my_module2"]={
       host = "$address$"
       module = "my_module2"
    }

您是否调查过 Icinga2 Director?. It's handy and host configs are more easily managed. Also, monitoring-portal.org 是 Icinga 社区的一个很好的资源。

如果您使用 director,您可以复制该命令,然后将参数设置为 $end_url$ 等变量,然后创建该字段。然后您可以将该字段添加到您的模板(导入)并在那里输入一次。

例如,我们将此方法用于 SNMP 社区字符串。我们的模板附加了一个 $snmp_community$ 字段。所以在我们需要社区的任何命令中,我们只使用这个变量。这就是 Icinga2 了解我们所有 LAN Distro 社区字符串的方式,如果我们需要更改它,我们只需更改一次即可。