Icinga2 mit puppet clients: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 80: Zeile 80:
 
alles was in dieser classe berücksichticht werden soll mus in den ersten {} stehen
 
alles was in dieser classe berücksichticht werden soll mus in den ersten {} stehen
  
also aufpassen das am schlus der datei mit } abgeschlosen ist
+
also aufpassen das am schlus die datei mit } abgeschlosen ist
  
 
wir prüfen ob icinga2 installiert ist wenn nicht wird es installier sofern die repository stimmen
 
wir prüfen ob icinga2 installiert ist wenn nicht wird es installier sofern die repository stimmen
Zeile 88: Zeile 88:
  
  
*kopieren der zertifikate auf den client
+
* verlinken der certifikate und kopieren der konfigurationsdatein auf den server
 
+
file { '/etc/icinga2/pki/ca.crt':
 +
  ensure => 'link',
 +
  target => '/etc/ssl/xin-ca.crt',
 +
  require => Package["icinga2"]
 +
}
 +
file { "/etc/icinga2/pki/${fqdn}.crt":
 +
  ensure => 'link',
 +
  target => "/etc/ssl/${fqdn}.crt",
 +
  require => Package["icinga2"]
 +
}
 +
file { "/etc/icinga2/pki/${fqdn}.key":
 +
  ensure => 'link',
 +
  target => "/etc/ssl/${fqdn}.key",
 +
  require => Package["icinga2"]
 +
}
 
  file { "/etc/icinga2/pki/trusted-master.crt":
 
  file { "/etc/icinga2/pki/trusted-master.crt":
 
   ensure => file,
 
   ensure => file,
Zeile 104: Zeile 118:
 
     require => Package["icinga2"]
 
     require => Package["icinga2"]
 
  }
 
  }
 
 
 
  file {  '/etc/icinga2/constants.conf':
 
  file {  '/etc/icinga2/constants.conf':
 
     content  => template('icinga2client/constants.conf'),
 
     content  => template('icinga2client/constants.conf'),
Zeile 111: Zeile 123:
 
     owner => root, group => root,
 
     owner => root, group => root,
 
     require => Package["icinga2"]
 
     require => Package["icinga2"]
 +
}
 +
file {'/etc/icinga2/features-available/api.conf':
 +
  ensure => file,
 +
  mode => "0644",
 +
  owner => root, group => root,
 +
  source => "puppet:///modules/icinga2client/api.conf",
 +
  require => Package['icinga2'];
 +
}
 +
file { "/etc/icinga2/features-enabled/api.conf":
 +
  ensure => 'link',
 +
  target => "/etc/icinga2/features-available/api.conf",
 +
  require => Package["icinga2"]
 +
}
 +
wier sorgen dafür das das icinga neustartet da beim nechsten run die datei icinga2-restart-20151001
 +
schon existiert wird er nur bei der erstinstalation den reload ausführen
 +
$date = "icinga2-restart-20151001"
 +
exec { "icinga2-reload":
 +
    command => "service icinga2 restart > /var/run/$date",
 +
    creates  =>  "/var/run/$date",
 +
    require => File["/etc/icinga2/features-enabled/api.conf"]
 +
}
 +
}
  
 +
die ssl zertifikate werden in unserm besipielt im ordner /etc/puppet/modules/cert/files abgelegt
 +
 +
bis auf den trusted master den wir in /etc/puppet/modules/icinga2client/files/ ablegen
  
 +
die api.conf legen wir in /etc/puppet/modules/icinga2client/files/
  
 +
die constants.conf und die zones.conf sind dynmaish und liegen deshalb in in /etc/puppet/modules/icinga2client/templates
  
*verlinken der certifcate
+
=Auf dem Icinga Server=
 
+
*icinga2 node list
file { '/etc/icinga2/pki/ca.crt':
+
<pre>
  ensure => 'link',
+
Node 'nogger.xinux.org' (last seen: Fri Jun 24 05:46:29 2016)
  target => '/etc/ssl/xin-ca.crt',
+
    * Host 'nogger.xinux.org'
  require => Package["icinga2"]
+
        * Service 'disk'
}
+
        * Service 'disk /'
 +
        * Service 'http'
 +
        * Service 'icinga'
 +
        * Service 'load'
 +
        * Service 'ping4'
 +
        * Service 'ping6'
 +
        * Service 'procs'
 +
        * Service 'ssh'
 +
        * Service 'swap'
 +
        * Service 'users'
 +
</pre>
  
file { "/etc/icinga2/pki/${fqdn}.crt":
+
=check=
  ensure => 'link',
+
*find /etc/icinga2/repository.d -name "nogger.xinux.org*"
  target => "/etc/ssl/${fqdn}.crt",
+
er findet nichts
  require => Package["icinga2"]
+
=update config=
  }
+
*icinga2 node update-config
 +
=check=
 +
*find /etc/icinga2/repository.d -name "nogger.xinux.org*"
 +
./zones/nogger.xinux.org.conf
 +
./hosts/nogger.xinux.org.conf
 +
./hosts/nogger.xinux.org
 +
  ./endpoints/nogger.xinux.org.conf
  
file { "/etc/icinga2/pki/${fqdn}.key":
+
=icinga2 neutstarten=
  ensure => 'link',
+
*systemctl restart icinga2.service
  target => "/etc/ssl/${fqdn}.key",
 
  require => Package["icinga2"]
 
}
 

Aktuelle Version vom 24. Juni 2016, 11:00 Uhr

puppet zertifikate verteilen

ein modul erstellen wie unten im beispiel


class cert {
$cert = "${fqdn}.crt"
$key = "${fqdn}.key"


2 variablen setzen

damit wir die zertifikate richtig benen können

fqnd steht hier für fully qualified domain name

alls string würde der inhalt so ausehen

$key = irgendwas.xinux.org.key


file { '/etc/ssl/xin-ca.crt':
  ensure => file,
      mode   => 664,
      owner => root,
      group => root,
      source => 'puppet:///modules/cert/xin-ca.crt'
}
file { "/etc/ssl/$cert":
  ensure => file,
      mode   => 664,
      owner => root,
      group => root,
      source => "puppet:///modules/cert/$cert"
}
file { "/etc/ssl/$key":
 ensure => file,
      mode   => 664,
     owner => root,
      group => root,
      source => "puppet:///modules/cert/$key"
}

die source zeigt was kopiert werden soll

und file{wo es auf dem client landen soll}

mode,owner,group die rechte die auf dem client gesetzt werden sollen

icinga2 installation restart & verlinken

mkdir /etc/puppet/modules/icinga2-client

den ordner so strukturiern

Treeicinga2.png


  • die init.pp
class icinga2-client {
Exec { path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ] }
  package { "icinga2":
    ensure => present,
    require => Exec["icinga_repository"],
  }
  exec { "add-apt-repository ppa:formorer/icinga && apt-get update":
    alias => "icinga_repository",
    creates => "/etc/apt/sources.list.d/formorer-icinga-trusty.list",
    require => Package["software-properties-common"]
} 

  package { "software-properties-common":
    ensure => present
  }


alles was in dieser classe berücksichticht werden soll mus in den ersten {} stehen

also aufpassen das am schlus die datei mit } abgeschlosen ist

wir prüfen ob icinga2 installiert ist wenn nicht wird es installier sofern die repository stimmen

falls nicht fügen wird die repository hinzu wen software-properties-common installiert ist wen nicht installieren wir dies


  • verlinken der certifikate und kopieren der konfigurationsdatein auf den server
file { '/etc/icinga2/pki/ca.crt':
  ensure => 'link',
  target => '/etc/ssl/xin-ca.crt',
  require => Package["icinga2"]
}
file { "/etc/icinga2/pki/${fqdn}.crt":
  ensure => 'link',
  target => "/etc/ssl/${fqdn}.crt",
  require => Package["icinga2"]
}
file { "/etc/icinga2/pki/${fqdn}.key":
  ensure => 'link',
  target => "/etc/ssl/${fqdn}.key",
  require => Package["icinga2"]
}
file { "/etc/icinga2/pki/trusted-master.crt":
 ensure => file,
     mode   => "664",
     owner => root,
     group => root,
     source => "puppet:///modules/icinga2client/trusted-master.crt",
     require => Package["icinga2"]
}
file {  '/etc/icinga2/zones.conf':
   content  => template('icinga2client/zones.conf'),
   mode => "0644",
   owner => root, group => root,
   require => Package["icinga2"]
}
file {  '/etc/icinga2/constants.conf':
   content  => template('icinga2client/constants.conf'),
   mode => "0644",
   owner => root, group => root,
   require => Package["icinga2"]
}
file {'/etc/icinga2/features-available/api.conf':
  ensure => file,
  mode => "0644",
  owner => root, group => root,
  source => "puppet:///modules/icinga2client/api.conf",
  require => Package['icinga2'];
}
file { "/etc/icinga2/features-enabled/api.conf":
  ensure => 'link',
  target => "/etc/icinga2/features-available/api.conf",
  require => Package["icinga2"]
}

wier sorgen dafür das das icinga neustartet da beim nechsten run die datei icinga2-restart-20151001 schon existiert wird er nur bei der erstinstalation den reload ausführen

$date = "icinga2-restart-20151001"
exec { "icinga2-reload":
   command => "service icinga2 restart > /var/run/$date",
   creates  =>  "/var/run/$date",
   require => File["/etc/icinga2/features-enabled/api.conf"]
}
}

die ssl zertifikate werden in unserm besipielt im ordner /etc/puppet/modules/cert/files abgelegt

bis auf den trusted master den wir in /etc/puppet/modules/icinga2client/files/ ablegen

die api.conf legen wir in /etc/puppet/modules/icinga2client/files/

die constants.conf und die zones.conf sind dynmaish und liegen deshalb in in /etc/puppet/modules/icinga2client/templates

Auf dem Icinga Server

  • icinga2 node list
Node 'nogger.xinux.org' (last seen: Fri Jun 24 05:46:29 2016)
    * Host 'nogger.xinux.org'
        * Service 'disk'
        * Service 'disk /'
        * Service 'http'
        * Service 'icinga'
        * Service 'load'
        * Service 'ping4'
        * Service 'ping6'
        * Service 'procs'
        * Service 'ssh'
        * Service 'swap'
        * Service 'users'

check

  • find /etc/icinga2/repository.d -name "nogger.xinux.org*"

er findet nichts

update config

  • icinga2 node update-config

check

  • find /etc/icinga2/repository.d -name "nogger.xinux.org*"
./zones/nogger.xinux.org.conf
./hosts/nogger.xinux.org.conf
./hosts/nogger.xinux.org
./endpoints/nogger.xinux.org.conf

icinga2 neutstarten

  • systemctl restart icinga2.service