Icinga2 mit puppet clients: Unterschied zwischen den Versionen
David (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=icinga2 clients= mkdir /etc/puppet/modules/icinga2-client den ordner so strukturiern Datei:treeicinga2.png die datei trusted-master.crt sollte nicht w…“) |
Thomas (Diskussion | Beiträge) (→check) |
||
| (20 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | =icinga2 | + | |
| + | =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 | mkdir /etc/puppet/modules/icinga2-client | ||
| Zeile 5: | Zeile 56: | ||
[[Datei:treeicinga2.png]] | [[Datei:treeicinga2.png]] | ||
| − | |||
| − | |||
| − | |||
| − | |||
| Zeile 31: | Zeile 78: | ||
| − | + | 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 | ||
| + | <pre> | ||
| + | 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' | ||
| + | </pre> | ||
| + | =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 | ||
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
- 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
