Como configurar o cliente remoto Icinga2 sem usar o assistente da CLI?


11

Quero configurar os clientes remotos do Icinga2 via Puppet, mas toda a página da documentação oficial fala sobre o uso do seu incrível assistente de CLI, que precisa ser executado manualmente.

Alguma solução alternativa? Talvez eu devesse voltar para Nagios?


Os documentos aos quais você vincula apenas fazem referência a uma configuração da GUI para Windows. É sobre isso que você está perguntando?
Keith

1
docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/… ... onde os documentos mais recentes têm uma seção dedicada a essa mesma pergunta.
TryTryAgain

1
Atualização: a documentação foi movida para o novo local de icinga.com/docs/icinga2/latest/doc/06-distributed-monitoring/…
Věroš K.

Respostas:


16

Eu tive o mesmo problema. É isso que eu uso, depois de extrair a lógica do código do assistente do nó icinga2.

Variáveis ​​que você precisará:

$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'

O 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

1

É como o TryTryAgain escreveu. Os documentos mais recentes descrevem duas maneiras diferentes. Top-Down execução de comando remoto e Top-Down sincronização de configuração

A diferença dessas abordagens é que a execução de comandos remotos acionará todos os comandos do mestre, enquanto a sincronização de configuração sincronizará todos os arquivos de configuração localizados nos /etc/icinga2/zones.dnós filhos (satélites e clientes) e acionará a execução de comandos diretamente no nó de extremidade.

Prefiro usar a abordagem de sincronização de configuração descendente , porque o cliente executará verificações mesmo se o mestre perder a conexão com o filho.

Você precisa habilitar o APIrecurso 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 e como nome da zona. Lembre - se : copie isso zones.confpara todos os nós.

O próximo passo seria definir todos os serviços, modelos e grupos dentro /etc/icinga2/zones.d/e cada host em seu próprio hosts.conf dentro do 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 foi impedir o uso das configurações internas /etc/icinga2/conf.dporque adicionei todo o material genérico (e global usado) /etc/icinga2/zones.d/globale o material específico do host dentro/etc/icinga2/zones.d/fqdnX.of.host

Por último, mas não menos importante, você deve remover a instrução include para conf.d

# /etc/icinga2/icinga2.conf

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

É isso aí. Essa configuração requer o gerenciamento manual de seus certificados ou com o gerenciamento de configuração de sua escolha. Não o gerará e não está usando o icinga pki. Não vejo nenhuma razão para usar um pki específico da ferramenta, desde que haja ferramentas específicas para isso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.