É como TryTryAgain escreveu. Os documentos mais recentes descrevem duas maneiras diferentes.
Execução de Comando Remoto Top-Down e Sincronização de Configuração Top-Down
A diferença desta abordagem é que a execução de comandos remotos acionará todos os comandos do mestre, enquanto config sync sincronizará todos os arquivos de configuração localizados em /etc/icinga2/zones.d
com os nós filhos (satelites bem como clientes) e acionam a execução de comandos diretamente no endpoint.
Eu prefiro usar a abordagem Top-Down Config Sync porque o cliente executará verificações mesmo que o mestre perca a conexão com o filho.
Você precisa ativar o recurso API
em todos os nós.
# /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
}
Agora crie um arquivo de zona e copie-o para todos os nós
# /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"
}
A melhor prática é usar o fqdn de seus nós como nome do terminal, bem como o nome da zona.
Lembre-se : copie este zones.conf
para todos os nós.
A próxima etapa seria definir todos os serviços, modelos e grupos dentro de /etc/icinga2/zones.d/
e cada host em seu próprio hosts.conf dentro de seu diretório de zona.
# /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"
}
Minha abordagem era evitar o uso das configurações dentro de /etc/icinga2/conf.d
, porque adicionei todo o material genérico (e global usado) em /etc/icinga2/zones.d/global
e o material específico do host dentro de /etc/icinga2/zones.d/fqdnX.of.host
Por último, mas não menos importante, você tem que remover a declaração include para conf.d
# /etc/icinga2/icinga2.conf
[...]
// include_recursive "conf.d"
É isso. Essa configuração requer o gerenciamento dos certificados manualmente ou com o gerenciamento de configurações de sua escolha. Não irá gerá-lo e não está usando o icinga pki. Não vejo nenhum motivo para usar um pki específico da ferramenta, desde que existam ferramentas específicas para isso.