Это как TryTryAgain написал. Последние документы описывают два разных способа.
Top-Down Remote Command Execution и Top-Down синхронизация конфигурации
Отличие этого подхода заключается в том, что удаленное выполнение команд будет запускать все команды от мастера, тогда как синхронизация конфигурации будет синхронизировать все файлы конфигурации, расположенные в /etc/icinga2/zones.d
дочерних узлах (как со спутниками, так и с клиентами), и запускать команды непосредственно на конечной точке.
Я предпочитаю использовать подход Top-Down Config Sync, потому что клиент будет запускать проверки, даже если мастер потеряет связь с дочерним элементом.
Вы должны включить API
функцию на всех узлах.
# /etc/icinga2/features-enabled/api.conf
object ApiListener "api" {
cert_path = "/etc/ssl/{{ hostname }}.pem"
key_path = "/etc/ssl/{{ hostname }}-key.pem"
ca_path = "/etc/ssl/rootca.pem"
// only on satelites and clients
accept_config = true
}
Теперь создайте файл зоны и скопируйте его на все узлы
# /etc/icinga2/zones.conf
// global zone used for zone overlapping configs
object Zone "global" {
global = true
}
// endpoints
object Endpoint "fqdn1.of.host" {
host = "fqdn1.of.host"
}
object Endpoint "fqdn2.of.host" {
host = "fqdn2.of.host"
}
// for each endpoint one zone
object Zone "fqdn1.of.host" {
endpoints = [ "fqdn1.of.host" ]
}
object Zone "fqdn2.of.host" {
endpoints = [ "fqdn2.of.host" ]
parent = "fqdn1.of.host"
}
Рекомендуется использовать fqdn ваших узлов в качестве имени конечной точки, а также имени зоны.
Помните : скопируйте это zones.conf
на все узлы.
Следующим шагом будет определение всех сервисов, шаблонов и групп внутри /etc/icinga2/zones.d/
и каждого хоста в его собственном hosts.conf внутри своего каталога зоны.
# /etc/icinga2/zones.d/global/templates.conf
template Host "generic-host" {
max_check_attempts = 3
check_interval = 1m
retry_interval = 30s
check_command = "hostalive"
}
# /etc/icinga2/zones.d/fqdn1.of.host/hosts.conf
// this is the master
object Host "fqdn1.of.host" {
import "generic-host"
address = "fqdn1.of.host"
}
# /etc/icinga2/zones.d/fqdn2.of.host/hosts.conf
// this is a satelite/client
object Host "fqdn2.of.host" {
import "generic-host"
address = "fqdn2.of.host"
}
Мой подход состоял в том, чтобы предотвратить использование внутри конфигов, /etc/icinga2/conf.d
потому что я добавил все общие (и глобально используемые) вещи /etc/icinga2/zones.d/global
и специфичные для хоста вещи внутри/etc/icinga2/zones.d/fqdnX.of.host
И последнее, но не менее важное: вы должны удалить оператор include для conf.d
# /etc/icinga2/icinga2.conf
[...]
// include_recursive "conf.d"
Вот и все. Эта настройка требует управления вашими сертификатами вручную или с помощью управления конфигурацией по вашему выбору. Он не будет генерировать его и не использует icinga pki. Не вижу причин, по которым я должен использовать инструмент pki, если для этого есть специальные инструменты.