Большая изменчивая часть моей конфигурации 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).
Вы упомянули, что используете Icinga. Если вы используете последнюю версию Icinga2, формат конфигурации поддерживает однострочные определения через точку с запятой. Я делаю это в своей собственной настройке, чтобы добавлять новые службы при настройке с помощью ansible. например
apply Service "freshness_etl_vendor_import_6am" to Host { import "etl-freshness-service" ; vars.dependens_on_job = "etl_vendor_import_6am" ; assign where "etl_host" in host.groups }
Видеть Вот для получения дополнительной информации в документах. Если вы используете icinga2 и он не работает для вас, возможно, есть другие проблемы с форматированием.
Нет, ты не можешь этого сделать. Парсер файла конфигурации читает по одной строке за раз и ожидает, что в каждой строке будет одна директива. Вам придется сильно изменить парсер в xodtemplate.c
сделать это.
Единственные особые исключения в парсере: ;
или #
(комментарии) и \
(разделите длинную строку на несколько строк).
Единственный способ, который я могу придумать, чтобы сделать то, что вы хотите, - это использовать какие-то другие разделители в качестве замены для \n
в выводе вашей системы управления, а затем после обработки (например, sed -e
) эти файлы на Nagios / Icinga заканчиваются в файлы конфигурации.
Например, вы можете затем изменить сценарий инициализации для выполнения задания постобработки перед каждой перезагрузкой / HUP. Это было бы некрасиво, но это могло сработать.