CLI 마법사를 사용하지 않고 Icinga2 원격 클라이언트를 설정하는 방법은 무엇입니까?


11

Puppet을 통해 Icinga2 원격 클라이언트를 설정하고 싶지만 공식 문서 의 전체 페이지는 수동으로 실행 해야하는 멋진 CLI 마법사 사용에 대해 설명 합니다.

해결 방법이 있습니까? 나지 오스로 돌아 가야 할까?


링크 한 문서는 Windows 용 GUI 설정 만 참조합니다. 이것이 당신이 요구하는 것입니까?
Keith는

1
docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/… ... 최신 문서에는이 질문에 대한 섹션이 있습니다.
TryTryAgain

답변:


16

나는 같은 문제가 있었다. 이것은 icinga2 노드 마법사 코드에서 논리를 추출한 후 사용하는 것입니다.

필요한 변수 :

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

코드:

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

TryTryAgain이 쓴 것과 같습니다. 최신 문서는 두 가지 다른 방법을 설명합니다. 하향식 원격 명령 실행하향식 구성 동기화

이 접근 방식의 차이점은 원격 명령 실행 이 마스터의 모든 명령을 트리거하는 반면 구성 동기화/etc/icinga2/zones.d하위 노드 (클라이언트는 물론 클라이언트) 에있는 모든 구성 파일을 동기화 하고 엔드 포인트에서 직접 명령 실행을 트리거한다는 것입니다.

마스터가 자식에 대한 연결을 잃어버린 경우에도 클라이언트가 검사를 실행하기 때문에 Top-Down Config Sync 접근 방식을 선호합니다 .

API모든 노드에서이 기능 을 활성화해야 합니다.

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

이제 영역 파일을 만들어 모든 노드에 복사하십시오.

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

가장 좋은 방법은 노드의 fqdn을 엔드 포인트 이름 및 영역 이름으로 사용하는 것입니다. 기억하십시오 : 이것을 zones.conf모든 노드에 복사 하십시오 .

다음 단계는 /etc/icinga2/zones.d/내부 디렉토리의 모든 서비스, 템플릿 및 그룹을 정의하고 영역 디렉토리 내부의 자체 hosts.conf를 정의하는 것입니다.

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

내 접근 방식은 /etc/icinga2/conf.d모든 일반 (및 글로벌 사용) 항목 /etc/icinga2/zones.d/global과 호스트 특정 항목을 내부에 추가했기 때문에 구성을 사용하지 못하게하는 것이 었습니다./etc/icinga2/zones.d/fqdnX.of.host

마지막으로 conf.d에 대한 include 문을 제거해야합니다.

# /etc/icinga2/icinga2.conf

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

그게 다야. 이 설정에서는 인증서를 수동으로 또는 선택한 구성 관리로 관리해야합니다. 그것을 생성하지 않으며 icinga pki를 사용하지 않습니다. 특정 도구가있는 한 도구 별 pki를 사용해야하는 이유를 보지 마십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.