¿Cómo configurar el cliente remoto Icinga2 sin usar el asistente de CLI?

11

Quiero configurar clientes remotos Icinga2 a través de Puppet, pero toda la página de la documentación oficial habla sobre el uso de su increíble asistente de CLI, que debe ejecutarse manualmente.

¿Alguna solución? ¿Quizás debería volver a Nagios?

Limbo Peng
fuente
Los documentos que vincula solo hacen referencia a una configuración de GUI para Windows. ¿Es esto lo que estás preguntando?
Keith
1
docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/… ... donde los últimos documentos tienen una sección dedicada a esta misma pregunta.
Try TryAgain
1
Actualización: La documentación se trasladó a la nueva ubicación de icinga.com/docs/icinga2/latest/doc/06-distributed-monitoring/…
Věroš K.

Respuestas:

16

Tuve el mismo problema. Esto es lo que uso, después de extraer la lógica del código del asistente del nodo icinga2.

Variables que necesitará:

$pki_dir - /etc/icinga2/pki in the default installation
$fqdn - fully host+domain name of the client.
$icinga2_master - resolvable fqdn of the master
$icinga2_master_port - the port the master is connectable on.
$ticket - generated on the master via 'icinga2 pki ticket --cn $fqdn'

El código:

mkdir icinga:icinga 0700 $pki_dir
icinga2 pki new-cert --cn $fqdn --key $pki_dir/$fqdn.key --cert $pki_dir/$fqdn.crt
icinga2 pki save-cert --key $pki_dir/$fqdn.key --cert $pki_dir/$fqdn.crt --trustedcert $pki_dir/trusted-master.crt --host $icinga2_master
icinga2 pki request --host $icinga2_master --port $icinga2_master_port --ticket $ticket --key $pki_dir/$fqdn.key --cert $pki_dir/$fqdn.crt --trustedcert $pki_dir/trusted-master.crt --ca $pki_dir/ca.key
icinga2 node setup --ticket $ticket --endpoint $icinga2_master --zone $fqdn --master_host $icinga2_master --trustedcert $pki_dir/trusted-master.crt
systemctl restart icinga2  # or however you restart your icinga
Neil Katin
fuente
1

Es como Try TryAgain escribió. Los últimos documentos describen dos formas diferentes. De arriba hacia abajo ejecución remota de comandos y de arriba hacia abajo sincronización de configuración

La diferencia de este enfoque es que la ejecución remota de comandos activará todos los comandos del maestro, mientras que la sincronización de configuración sincronizará todos los archivos de configuración ubicados en /etc/icinga2/zones.dlos nodos secundarios (satélites y clientes) y activará la ejecución de comandos directamente en el punto final.

Prefiero utilizar el enfoque de sincronización de configuración de arriba hacia abajo porque el cliente ejecutará comprobaciones incluso si el maestro pierde la conexión con el niño.

Debe habilitar la APIfunción en todos los nodos.

# /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
}

Ahora cree un archivo de zona y cópielo en todos los nodos

# /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"
}

La mejor práctica es utilizar el fqdn de sus nodos como nombre de punto final y como nombre de zona. Recuerde : copie esto zones.confen todos los nodos.

El siguiente paso sería definir todos los servicios, plantillas y grupos dentro de /etc/icinga2/zones.d/cada host en su propio host.conf dentro de su directorio 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"
}

Mi enfoque era evitar el uso de las configuraciones internas /etc/icinga2/conf.dporque agregué todas las cosas genéricas (y globalmente utilizadas) /etc/icinga2/zones.d/globaly las cosas específicas del host dentro/etc/icinga2/zones.d/fqdnX.of.host

Por último, pero no menos importante, debe eliminar la declaración de inclusión para conf.d

# /etc/icinga2/icinga2.conf

[...]
// include_recursive "conf.d"

Eso es. Esta configuración requiere administrar sus certificados manualmente o con la administración de configuración de su elección. No lo generará y no está usando el icinga pki. No veo ninguna razón por la que deba usar una herramienta específica pki siempre que haya herramientas específicas para esto.

craver
fuente