我的 Nagios 3(实际上是 Icinga 1)配置的大部分易变部分如下所示:
...
define host{
host_name bla0037
use template-bla
}
define host{
host_name bla0042
use template-bla
}
...
如果我可以将主机定义捆绑到单行中,脚本化管理会容易得多,如下所示:
...
define host{ host_name bla0037; use template-bla }
define host{ host_name bla0042; use template-bla }
...
但我还没有发现如何。(例如,分号使一行的其余部分成为注释)。想法?
(生成大量小host-bla0XYZ.cfg
文件也有助于自动化,但我不想弄乱 conf 目录)。
不,你不能这样做。配置文件解析器一次读取一行,并期望每行有一个指令。您必须大量修改解析器
xodtemplate.c
才能做到这一点。解析器中唯一的特殊例外是
;
or#
(comments) and\
(split a long line into multiple lines)。我能想到做你想做的唯一方法是
\n
在管理系统输出中使用一些不同的分隔作为替代,然后sed -e
在 Nagios/Icinga 上对这些文件进行后处理(例如,)到 config文件。例如,您可以修改初始化脚本以在每次重新加载/HUP 之前运行您的后处理作业。这将是一个丑陋的黑客,但它可以工作。
你提到你正在使用 Icinga。如果您使用的是最新的 Icinga2,则配置格式支持通过分号进行的单行定义。我在自己的设置中执行此操作,以便在使用 ansible 进行配置时添加新服务。例如
有关文档中的更多详细信息,请参见此处。如果您使用的是 icinga2 并且它不适合您,则可能是其他一些格式问题在起作用。