Hi,
I maybe misunderstood the documentation but it seems the satellites, in the three-level cluster setup, don’t support config sync to agents.
My aim is to have a three-level cluster similar to described in the documentation but I’d like to have some agents checked by themself, not by the satellite (Top Down Config Sync).
Environment:
- Linux, Debian - Buster.
- Icinga version: 2.12.0-1.buster
- Configuration realized by hand, no director.
Bellow is example configuration similar to one I use.
root@master# cat /etc/icinga2/zones.conf
object Zone "global-templates" {
global = true
}
object Endpoint "master_server" {
// that's us
}
object Endpoint "satellite_server" {
host = "satellite_server"
}
object Endpoint "agent" {
}
object Zone "master" {
endpoints = [ "master_server" ]
}
object Zone "satellite" {
parent = "master"
endpoints = [ "satellite_server" ]
}
object Zone "agent" {
parent = "satellite"
endpoints = [ "agent" ]
}
root@master# ls /etc/icinga2/zones.d/
global-templates/ master/ satellite/
root@master# ls /etc/icinga2/zones.d/satellite/
satellite_server.conf agent.conf
root@master# cat /etc/icinga2/zones.d/satellite/agent.conf
object Host "agent" {
import "generic-host"
address = "agent"
zone = "satellite"
vars.os = "Linux"
vars.distro = "Debian"
vars.agent_type = "Icinga"
object Service "disk" {
import "generic-service"
host_name = "agent"
check_command = "disk"
}
root@satellite# cat /etc/icinga2/zones.conf
object Endpoint "master" {
// Connect to us
}
object Endpoint "satellite" {
// That's us
}
object Endpoint "agent" {
host = "agent"
}
object Zone master {
endpoints = [ "master_server" ]
object Zone satellite {
parent = "master"
endpoints = [ "satellite_server" ]
}
object Zone agent {
endpoints = [ "agent" ]
parent = "satellite"
object Zone "global-templates" {
global = true
}
root@agent# cat /etc/icinga2/zones.conf
object Endpoint "satellite" {
// Connect to us
}
object Endpoint "agent" {
// That's us
}
object Zone "satellite" {
endpoints = [ "satellite_server" ]
}
object Zone "agent" {
endpoints = [ "agent" ]
parent = "satellite"
}
object Zone "global-templates" {
global = true
}
The satellite zone will be synced to the satellite node with no problem but on the agent node only the global-templates are in sync.
So, do I misunderstood the documentation, and thus the configuration is valid but the setup is not in the scope of the Icinga, or is there anything wrong with my config?
I realize I can create a separate zone just for the agent, so it will be connected directly to the master but I’d like to agent in the satellite zone because of some other requirements (some agents are not accessible from the master for example.)
My guess is that the agent cannot receive the “satellite zone” configuration because it is the superior zone, in that case, I would need something like a zone for the agent inside the satellite zone. I’ve tried that approach but that doesn’t work It seems the satellite is not aware of the “child zone” which should be synced to the agent(child).
Thank you in advance for any help or clarification.