To tak, jak napisał TryTryAgain. Najnowsze dokumenty opisują dwa różne sposoby.
Top-Down zdalne wykonanie poleceń i odgórne Config Sync
Różnica w tym podejściu polega na tym, że zdalne wykonywanie poleceń spowoduje wyzwolenie wszystkich poleceń z mastera, natomiast synchronizacja konfiguracji zsynchronizuje wszystkie pliki konfiguracyjne znajdujące się w /etc/icinga2/zones.d
węzłach potomnych (satelitach i klientach) i wyzwoli wykonanie poleceń bezpośrednio w punkcie końcowym.
Wolę używać metody synchronizacji konfiguracji z góry na dół, ponieważ klient uruchomi kontrole, nawet jeśli master utraci połączenie z dzieckiem.
Musisz włączyć tę API
funkcję na wszystkich węzłach.
# /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
}
Teraz utwórz plik strefy i skopiuj go do wszystkich węzłów
# /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"
}
najlepszą praktyką jest użycie nazwy fqdn węzłów jako nazwy punktu końcowego oraz nazwy strefy.
Pamiętaj : skopiuj to zones.conf
do wszystkich węzłów.
Następnym krokiem byłoby zdefiniowanie wszystkich usług, szablonów i grup wewnątrz /etc/icinga2/zones.d/
i każdego hosta we własnym hosts.conf w katalogu strefy.
# /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"
}
Moje podejście polegało na zapobieganiu używaniu konfiguracji wewnątrz, /etc/icinga2/conf.d
ponieważ dodałem wszystkie ogólne (i globalnie używane) elementy /etc/icinga2/zones.d/global
i specyficzne dla hosta elementy wewnątrz/etc/icinga2/zones.d/fqdnX.of.host
Na koniec należy usunąć instrukcję include dla conf.d
# /etc/icinga2/icinga2.conf
[...]
// include_recursive "conf.d"
Otóż to. Ta konfiguracja wymaga ręcznego zarządzania certyfikatami lub zarządzania konfiguracją według własnego wyboru. Nie wygeneruje go i nie używa pektu icinga. Nie widzę żadnego powodu, dla którego powinienem używać pki dla konkretnego narzędzia, o ile istnieją do tego specjalne narzędzia.