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?
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?
Respuestas:
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
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.d
los 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 API
funció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.conf
en 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.d
porque agregué todas las cosas genéricas (y globalmente utilizadas) /etc/icinga2/zones.d/global
y 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.