konfigurationsmanagement mit puppet - checkmk.com · (logging + auditing + compliance)...

45
19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz © Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 1 / 47 1 / 47 Konfigurationsmanagement mit Puppet Konfigurationsmanagement mit Puppet Grundlagen des Konfigurationsmanagement Was kann ein Konfigurationsmanagement und was nicht? Wofür ist ein Konfigurationsmanagement gut und wofür besser nicht? Best Practices beim Umgang mit Puppet Übersicht der Konfigurations-Möglichkeiten Übersicht zu den Möglichkeiten der Organisation von Puppet-Konfiguration Praxis-Beispiele zur Nutzung von Puppet mit OMD/Nagios/Check_MK Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation

Upload: others

Post on 17-Aug-2020

1 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 1 / 471 / 47

Konfigurationsmanagement mit PuppetKonfigurationsmanagement mit Puppet

● Grundlagen des Konfigurationsmanagement

● Was kann ein Konfigurationsmanagement und was nicht?

● Wofür ist ein Konfigurationsmanagement gut und wofür besser nicht?

● Best Practices beim Umgang mit Puppet

● Übersicht der Konfigurations-Möglichkeiten

● Übersicht zu den Möglichkeiten der Organisation von Puppet-Konfiguration

● Praxis-Beispiele zur Nutzung von Puppet mit OMD/Nagios/Check_MK

● Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation

Page 2: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 2 / 472 / 47

whoamiwhoami

Vita: Sascha Brechmann● Linux-User seit Debian „Bo/Hamm“

● Nagios-User seit 2005

● Puppet-User seit 2010

● Check_MK User seit 2010/2011

Page 3: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 3 / 473 / 47

Konfigurationsmanagement mit PuppetKonfigurationsmanagement mit Puppet

● Grundlagen des Konfigurationsmanagement● Was kann ein Konfigurationsmanagement und was nicht?

● Wofür ist ein Konfigurationsmanagement und wofür besser nicht?

● Best Practices beim Umgang mit Puppet

● Übersicht der Konfigurations-Möglichkeiten

● Übersicht zu den Möglichkeiten der Organisation von Puppet-Konfiguration

● Praxis-Beispiele zur Nutzung von Puppet mit OMD/Nagios/Check_MK

● Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation

Page 4: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 4 / 474 / 47

Grundlagen des KonfigurationsmanagementGrundlagen des Konfigurationsmanagement

● Was ist Konfigurationsmanagement

● Warum macht man ein Konf.Mgmt

● Welche Möglichkeiten für ein Konfigurationsmanagement gibt es

● Warum sollte ich ein Konfigurationsmanagement Framework wie Puppet nutzen und keine „Shell-Skripte“

Page 5: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 5 / 475 / 47

Was ist KonfigurationsmanagementWas ist Konfigurationsmanagement

Konfigurationsmanagement (KM) ist eine Managementdisziplin, die organisatorische und verhaltensmäßige Regeln auf den Produktlebenslauf einer Konfigurationseinheit von seiner Entwicklung über Herstellung und Betreuung anwendet.

Konfigurationseinheit meint in diesem Zusammenhang eine „beliebige Kombination aus Hardware, Software oder Diensten“.

© Wikipedia

Page 6: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 6 / 476 / 47

Was ist KonfigurationsmanagementWas ist Konfigurationsmanagement

Konfigurationsmanagement sind also Regel und Prozesse, welche auf einer beliebigen Anzahl an (Server-)Systemen koordiniert angewendet und überwacht zu werden.

Hierbei soll folgendes erreicht werden:

● Einheitlichkeit

● Überprüfbarkeit

● Nachvollziehbarkeit

Page 7: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 7 / 477 / 47

Ziele des KonfigurationsmanagementZiele des Konfigurationsmanagement

● EinheitlichkeitEine Konfigurations-Regel soll bei allen betroffenen Systemen immer zum gleichen Ergebnis führen. D.H. Server(/Rollen) sind nicht mehr unterschiedlich!

● ÜberprüfbarkeitEs ist möglich vorab zu sehen, ob und was geändert werden würde. Es ist auch möglich zu sehen was , wann und wie Verändert wurde. (Logging + Auditing + Compliance)

● NachvollziehbarkeitJede Änderung wird Protokolliert und kann g.g. wieder zurück genommen werden. (Change-Log + Rollback)

Page 8: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 8 / 478 / 47

Warum macht man ein Konfig.MgmtWarum macht man ein Konfig.Mgmt

● rechtliche oder vertragliche Vorgaben● ITIL / ITSM

● Vermeidung von Abhängigkeiten (Nur Mitarbeiter „X“ weiß, wie dieses System installiert wird)

● Wiederherstellbarkeit von Systemen, trotz des Delta zwischen Backup und Ausfall (nicht die Wiederherstellbarkeit von Daten!)

● Standardisierung (Basis-Installation; Default-Tools; Default-User; Default-Verzeichnispfade; Einheitliches Bild von Konfig-Dateien)

● [ Fähigkeit zum Skalieren (Mitarbeiter + Systeme) ]

Page 9: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 9 / 479 / 47

Warum ein Konf.Mgmt Framework und keine „Shell“-Skripte

Warum ein Konf.Mgmt Framework und keine „Shell“-Skripte

● Shell-Skripte sind meistens nicht besonders Abstrakt und sehr oft Komplex.

● Shell-Skripte sind meistens auf eine Umgebung optimiert, schon ein Versions-Update kann hier zu Problemen führen.

● Shell-Skripte funktionieren eigentlich nie OS- oder Distributions- Übergreifend

Page 10: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 10 / 4710 / 47

Konfigurationsmanagement FrameworkKonfigurationsmanagement Framework

Eine kleine Liste, der bekanntesten Konf.Mgmt Frameworks:

● Cfengine (Urvater aller KMF)

● Puppet („einfache“ Syntax zur Konfigurations-Beschreibung)

● Chef (Entwickler lieben es, weil auch die Konfiguration in Ruby „Programmiert“ wird)

● Ansible (New Kid on the Block)

Page 11: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 11 / 4711 / 47

Vorteile von Konfigurationsmanagement SoftwareVorteile von Konfigurationsmanagement Software

● Zentralisiertes und automatisches Management von Software und Konfiguration

● Schnelle und Skalierbare Deployments

● Konfigurationen sind leicht anpassbar

● Einhaltung von Abhängigkeiten

● Möglichkeiten zur (automatischen) Dokumentation

Page 12: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 12 / 4712 / 47

Konfigurationsmanagement mit PuppetKonfigurationsmanagement mit Puppet

● Grundlagen des Konfigurationsmanagement

● Was kann ein Konfigurationsmanagement und was nicht?

● Wofür ist ein Konfigurationsmanagement und wofür besser nicht?

● Best Practices beim Umgang mit Puppet

● Übersicht der Konfigurations-Möglichkeiten

● Übersicht zu den Möglichkeiten der Organisation von Puppet-Konfiguration

● Praxis-Beispiele zur Nutzung von Puppet mit OMD/Nagios/Check_MK

● Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation

Page 13: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 13 / 4713 / 47

Was sich gut mit einem Konf.MGMT verwalten lässt

Was sich gut mit einem Konf.MGMT verwalten lässt

● Konfigdateien / Text-Datei „z.B. alles unter /etc/“

● Services/Dienste „Einrichten/Starten/Stoppen/Löschen“

● Software-Packete „Installieren/Deinstallieren/Versionen“

● User/Gruppen/Rechte-Verwaltung

● Mountpoints

● Cronjobs

Page 14: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 14 / 4714 / 47

Was sollte man nicht mit einem Konf.Mgmt Framework machenWas sollte man nicht mit einem Konf.Mgmt Framework machen

● Datei-Server / Dateien Kopieren. Hier besser NFS/Rsync nutzen

● (Shell-)Befehle ausführen. Hier besser eine Orchestration-Software wie MCollective nutzen.

● „Software-Deployment“. Applikations-Software, wie z.B. PHP-Applikationen. Hier besser Cappistrano oder Func

● Scheduler. Hier besser etwas wie Cron, GNUBatch oder ähnliches nutzen

Page 15: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 15 / 4715 / 47

Konfigurationsmanagement mit PuppetKonfigurationsmanagement mit Puppet

● Grundlagen des Konfigurationsmanagement

● Was kann ein Konfigurationsmanagement und was nicht?

● Wofür ist ein Konfigurationsmanagement und wofür besser nicht?

● Best Practices beim Umgang mit Puppet● Übersicht der Konfigurations-Möglichkeiten

● Übersicht zu den Möglichkeiten der Organisation von Puppet-Konfiguration

● Praxis-Beispiele zur Nutzung von Puppet mit OMD/Nagios/Check_MK

● Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation

Page 16: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 16 / 4716 / 47

Best Practices beimUmgang mit PuppetBest Practices beimUmgang mit Puppet

● Trennung von „Puppet“-Code und Daten (Params.pp / Hiera / ENC)

● Puppet-Code (Module) in Versions-Kontrolle (--> GIT)

● Konfiguration-Daten in Versions-Kontrolle (Hieradata --> GIT)

● Sensible Daten in „sicheren Konfiguration-Backend“ (Hiera-GPG/Hiera-Eyaml) / Verschlüsselung nutzen!

● Stages/Environments für Puppet-Code (DEV/Stage/Prod, auch für Puppet)

● Module von Puppetforge nutzen

● Style-Code (puppet-lint) / Code-Testing (rspecs)/ Unit-Tests einbauen

● „Infrastructure as code“ / Software-Entwicklungs-Prinzipien auf die Server- / VM-Landschaft anwenden

Page 17: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 17 / 4717 / 47

Konfigurationsmanagement mit PuppetKonfigurationsmanagement mit Puppet

● Grundlagen des Konfigurationsmanagement

● Was kann ein Konfigurationsmanagement und was nicht?

● Wofür ist ein Konfigurationsmanagement und wofür besser nicht?

● Best Practices beim Umgang mit Puppet

● Übersicht der Konfigurations-Möglichkeiten

● Möglichkeiten der Organisation von Puppet-Konfiguration

● Praxis-Beispiele zur Nutzung von Puppet mit OMD/Nagios/Check_MK

● Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation

Page 18: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 18 / 4718 / 47

Möglichkeiten für ein „Konfigurationsmanagement“Möglichkeiten für ein „Konfigurationsmanagement“

● „Changelog-File“

● „for i in ...“ (Shell-)Skripte

● Rsync

● Golden-Image

● Konfigurationsmanagement Framework

Page 19: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 19 / 4719 / 47

Konfigurationsmanagement mit PuppetKonfigurationsmanagement mit Puppet

● Grundlagen des Konfigurationsmanagement

● Was kann ein Konfigurationsmanagement und was nicht?

● Wofür ist ein Konfigurationsmanagement und wofür besser nicht?

● Best Practices beim Umgang mit Puppet

● Übersicht der Konfigurations-Möglichkeiten

● Möglichkeiten der Organisation von Puppet-Konfiguration● Praxis-Beispiele zur Nutzung von Puppet mit

OMD/Nagios/Check_MK

● Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation

Page 20: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 21 / 4721 / 47

Organisation von Puppet-Konfiguration

Organisation von Puppet-Konfiguration

● Klassen sind kleine Konfigurations-Einheiten,z.B. Apache-Package Installation

● Module bestehen aus mehreren KlassenTechnical-View, z.B. Apache-Module

● Profile enthalten „konfigurierte“ ModuleOrganisation-View, z.B. Apache-Vhost

● Rollen sind eine Sammlung von ProfilenBusiness-View, z.B. Webshop auf Apache

Page 21: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 22 / 4722 / 47

Konfigurationsmanagement mit PuppetKonfigurationsmanagement mit Puppet

● Grundlagen des Konfigurationsmanagement

● Was kann ein Konfigurationsmanagement und was nicht?

● Wofür ist ein Konfigurationsmanagement und wofür besser nicht?

● Best Practices beim Umgang mit Puppet

● Übersicht der Konfigurations-Möglichkeiten

● Möglichkeiten der Organisation von Puppet-Konfiguration

● Praxis-Beispiele zur Nutzung von Puppet mit OMD/Nagios/Check_MK

● Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation

Page 22: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 23 / 4723 / 47

Beispiele zur Nutzung von Puppet in Verbindung mit Check_MK

Beispiele zur Nutzung von Puppet in Verbindung mit Check_MK

● Setzen der Check_MK Tags via Puppet● Via Puppet Facts

– FQDN– Operationsystem– usw. ->Facter

● Via Custom Facts● Via if „has_variable“

● Setzen von Host-Alias und Notes_/Action_URL

● Setzen der Host-Parents

Page 23: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 24 / 4724 / 47

Praxis-Beispiele zur Nutzung von Puppet mit OMD/Nagios/Check_MK

Praxis-Beispiele zur Nutzung von Puppet mit OMD/Nagios/Check_MK● Puppet-Klasse „check_mk::agent“ im

Basis-Client. Exportiert : „all_hosts +=[ <FQDN>|<TAGs> ]“all_hosts +=[host.example.de|tcp|beispiel]“

● Puppet-Klasse „check_mk::server“ importiert die Client-Konfig von oben. Damit sind automatisch alle Puppet-Managed-Hosts im Check_MK

Page 24: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 26 / 4726 / 47

all_hosts += [

" <%= fqdn -%>|CG_DEFAULT | CG_customer | <%= architecture -%>| <%= operatingsystem -%> | processorcount_<%= processorcount -%> | network_<%= scope.lookupvar('::ipaddress').split(".")[0..2].join('_') -%> | ]

Beispiel: all_hosts +=[

„host.example.de|CG_DEFAULT | CG_customer | x86_64|...

Puppet Tags im host.erb TemplatePuppet Tags im host.erb Template

Facter Fact

Page 25: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 27 / 4727 / 47

all_hosts += [

" <%= fqdn -%>|CG_DEFAULT | CG_customer | <%= architecture -%>| <%= operatingsystem -%> | processorcount_<%= processorcount -%> | network_<%= scope.lookupvar('::ipaddress').split(".")[0..2].join('_') -%> | <% if hostname[/stage|dev/] == nil %>tcp<% else %>ping<% end %> | ",

]

Beispiel:all_hosts += [

„dev-host.example.de|CG_DEFAULT | CG_customer | ping|...“

„prod-host.example.de|CG_DEFAULT | CG_customer | tcp|...“

Puppet Tags im host.erb TemplatePuppet Tags im host.erb Template

if; than; else Schleife

Page 26: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 28 / 4728 / 47

all_hosts += [

" <%= fqdn -%>|CG_DEFAULT | CG_customer | <%= architecture -%>| <%= operatingsystem -%> | processorcount_<%= processorcount -%> |

network_<%= scope.lookupvar('::ipaddress').split(".")[0..2].join('_') -%> | ",

]

Beispiel: all_hosts +=[

„host.example.de|CG_DEFAULT | CG_customer | network_192_168_123|...

Puppet Tags im host.erb TemplatePuppet Tags im host.erb Template

Transformation einer Variable

Page 27: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 29 / 4729 / 47

all_hosts += [

" <%= fqdn -%>|CG_DEFAULT | CG_customer | <%= architecture -%>| <%= operatingsystem -%> | processorcount_<%= processorcount -%> | network_<%= scope.lookupvar('::ipaddress').split(".")[0..2].join('_') -%> | <% if hostname[/stage|dev/] == nil %>tcp<% else %>ping<% end %> | <% if @mysql_role %>mysql_role_<%=mysql_role-%><%else%>no_mysql_role<%end%> | <%= mktags.join('|') %> ",

]

Beispiel: all_hosts +=[

„db-host.example.de|CG_DEFAULT | CG_customer | mysql_role_master|...

Puppet Tags im host.erb TemplatePuppet Tags im host.erb Template

Überprüfung ob eine Variable gesetzt ist

Page 28: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 30 / 4730 / 47

all_hosts += [

" <%= fqdn -%>|CG_DEFAULT | CG_customer | <%= architecture -%>| <%= operatingsystem -%> | processorcount_<%= processorcount -%> | network_<%= scope.lookupvar('::ipaddress').split(".")[0..2].join('_') -%> | <% if hostname[/stage|dev/] == nil %>tcp<% else %>ping<% end %> | <% if @mysql_role %>mysql_role_<%=mysql_role-%><%else%>no_mysql_role<%end%> | <%= mktags.join('|') %> ",

]

extra_host_conf['alias'] += [ ( '<%= hostname -%>', ['<%= fqdn -%>'], ), ]

extra_host_conf['notes_url'] += [

("/<%= omd_site -%>/wiki/doku.php?id=nagios_doku:hosts:<%= hostname -%>", ['<%= fqdn -%>'], ),

]

→ $OMD_ROOT/etc/check_mk/conf.d/$FQDN.mk + CMK -I $FQDN + CMK -O

Puppet Tags im host.erb TemplatePuppet Tags im host.erb Template

Puppet-Array

Page 29: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 31 / 4731 / 47

all_hosts += [

" <%= fqdn -%>|CG_DEFAULT | CG_customer | <%= architecture -%>| <%= operatingsystem -%> | processorcount_<%= processorcount -%> | network_<%= scope.lookupvar('::ipaddress').split(".")[0..2].join('_') -%> | <% if hostname[/stage|dev/] == nil %>tcp<% else %>ping<% end %> | <% if @mysql_role %>mysql_role_<%=mysql_role-%><%else%>no_mysql_role<%end%> | <% if @puppet_classes_csv %> <%= puppet_classes_csv.split(",").join('|').split(":").join('_') -%><%end%>|<%= mktags.join('|') %> ",

]

extra_host_conf['alias'] += [ ( '<%= hostname -%>', ['<%= fqdn -%>'], ), ]

extra_host_conf['notes_url'] += [

("/<%= omd_site -%>/wiki/doku.php?id=nagios_doku:hosts:<%= hostname -%>", ['<%= fqdn -%>'], ),

]

→ $OMD_ROOT/etc/check_mk/conf.d/$FQDN.mk + CMK -I $FQDN + CMK -O

Puppet Tags im host.erb TemplatePuppet Tags im host.erb Template

Custom Puppet-Fact, welcher alle Puppet-Klasseneines Hosts enthält.

->/var/lib/puppet/classes.txt

Page 30: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 32 / 4732 / 47

extra_host_conf['alias'] += [

( '<%= hostname -%>', ['<%= fqdn -%>'], ), ]

Beispiel:

extra_host_conf['alias'] += [ ('db-host', ['db-host.example.de'],),

]

Puppet Tags im host.erb TemplatePuppet Tags im host.erb Template

Setzen von host-spezifischem Alias

Page 31: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 33 / 4733 / 47

extra_host_conf['notes_url'] += [

("/<%= omd_site -%>/wiki/doku.php?id=nagios_doku:hosts:<%= hostname -%>", ['<%= fqdn -%>'], ),

]

Beispiel:

extra_host_conf['notes_url'] += [

("/omd/wiki/doku.php?id=nagios_doku:hosts:db-host", ['db-host.example.de'], ),

]

Puppet Tags im host.erb TemplatePuppet Tags im host.erb Template

Page 32: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 34 / 4734 / 47

all_hosts += [

" <%= fqdn -%>|CG_DEFAULT | CG_customer | <%= architecture -%>| <%= mktags.join('|') %> ",

]

File: $CMK_CONF/$FQDN.mk Exec: CMK -I $FQDN + CMK -O via „exportierter Resource“

Automatische „Inventur“ +„Reload“ von Check_MK

Automatische „Inventur“ +„Reload“ von Check_MK

Page 33: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 35 / 4735 / 47

Advance Agent-UsageAdvance Agent-Usage

● Nutzung von Puppet-Concat um Agent-Konfig-Files aus Fragmenten zu erstellen

– /etc/check_mk/mrpe.cfg

– /etc/check_mk/logwatch.cfg

– /etc/check_mk/fileinfo.cfg

Page 34: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 36 / 4736 / 47

Check_MK MRPECheck_MK MRPE

Nagios NRPE Ersatz, sehr gut geeignet um lokale Nagios-Checks mit den Nagios-Plugins durch zuführen. Leider werden alle Checks mit dem gleichen Interval ausgeführt wie der Agent (default= 1min), es gibt aber einen Patch um dieses zu ändern

→ http://mathias-kettner.de/checkmk_mrpe.html

Page 35: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 37 / 4737 / 47

Puppet-Concat „mrpe.cfg“Puppet-Concat „mrpe.cfg“

# Build mrpe.cfg from Fragments !!! (TARGET Konfiguration)

concat{'/etc/check_mk/mrpe.cfg':

Mode => '0644', owner => root, group => root,

require => File['/etc/check_mk'],

} # concat

concat::fragment{'mrpe.cfg_header':

target => '/etc/check_mk/mrpe.cfg', TARGET muss vorher definiert sein !!!

content => „###This file is Puppet managed !!!“,

order => 01,

} #concat::fragment

concat::fragment{'mrpe.cfg_User_Logged_in': Fragmente können überall erstellt werden.

target => '/etc/check_mk/mrpe.cfg', Diese werden dann zusammen gesetzt in einer Datei.

content => "User_Logged_in /usr/lib64/nagios/plugins/check_users -w 4 -c 6",

order => 10,

} #concat::fragment

Page 36: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 38 / 4738 / 47

Host_ParentsHost_Parents

● Puppet kennt das Netz und das default Gateway

– Fact „ipaddress“ + Custom-Fact „gateway“

– check_mk TAG im Host.ERP Template

parent.mk:

parents = [

## Parent -> Hostname

( "Nagios-Parent-Name", [ "Nagios_Host_Name1" ] )

## Parent -> TAG

( "Nagios-Parent-Name2", ["TAG1"], ALL_HOSTS ),

]

Page 37: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 39 / 4739 / 47

Hosts-GroupsHosts-Groups

● Erzeugen von dynamischen Host-Groups auf Basis des Custom-Facts „Puppet_classes_csv“– Alle Host, welche das Tag „mysql__server“ (das ist die

Puppet-classe „mysql::server“ in umgewandelter Form) haben sollen in die Hostgrouppe MySQL-Server

● Erzeugen von dynamischen Host-Groups auf Basis der IP (Front-/Back-/Verwaltungs-LAN)

● Erzeugen von dynamischen Host-Groups auf Basis des Environment (DEV; Stage; QA; Prod)

Page 38: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 40 / 4740 / 47

● Check_MK Systemtime: Interessant bei VMs, da dort kein NTP vorhanden sein muss.

/usr/lib/check_mk_agent/plugins/systemtime:

Ein einfacher Check ob die Systemtime OK ist.

Plugin_ChecksPlugin_Checks

#!/bin/bash /bin/echo '<<<systemtime>>>' /bin/date '+%s'

Page 39: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 41 / 4741 / 47

Weitere Plugin_ChecksWeitere Plugin_Checks

● apache_status / nginx_status

● check_puppet (Status des Puppet-Agent)

● mk_logwatch

● mk_postgres / mk_mysql

● mk_job(Überwachung von Cronjobs)

Page 40: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 42 / 4742 / 47

Weitere Plugin_ChecksWeitere Plugin_Checks

● agent_vsphere(VMWare ESXi + VCenter)

● agent_emcvnx(EMC VNX Storage)

● Check_ipmi remote(iLO / iDRAC with own interface)

● check_bi_local(Alarmierung auf check_mk_bi Ergebnisse)

Page 41: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 43 / 4743 / 47

Konfigurationsmanagement mit PuppetKonfigurationsmanagement mit Puppet

● Grundlagen des Konfigurationsmanagement

● Was kann ein Konfigurationsmanagement und was nicht?

● Wofür ist ein Konfigurationsmanagement und wofür besser nicht?

● Best Practices beim Umgang mit Puppet

● Übersicht der Konfigurations-Möglichkeiten

● Möglichkeiten der Organisation von Puppet-Konfiguration

● Praxis-Beispiele zur Nutzung von Puppet mit OMD/Nagios/Check_MK

● Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation

Page 42: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 44 / 4744 / 47

Praxis-Beispiele zur Nutzung von Puppet für eine automatische

Dokumentation

Praxis-Beispiele zur Nutzung von Puppet für eine automatische

Dokumentation

Page 43: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

© Sascha Brechmann

© Sascha Brechmann 45 / 4745 / 47

check_mk::agent.pp:

@@file { "${wiki_confdir}/hosts/${::hostname}.txt":

content => template('check_mk/wiki_hosts.txt.erb'),

} #file

Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation

Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation

==== General ====

^ Hostname | <%= hostname -%> | ^ Domain | <%= domain -%> |

^ Virtualisiert | <%= is_virtual -%>, <%= virtual -%> |

^ CPU | vCPU | ^ Summe CPUs/Cores | <%= physicalprocessorcount -%> / <%= processorcount -%> |

^ RAM | <%= memorysize -%> | ^ Swap | <%= swapsize -%> |

^ Size HDD | <% if defined? lvm_pv_size %><% then %><%= lvm_pv_size %><% end %> |

^ OS-Version | <%= kernel -%> <%= operatingsystem -%> <%= operatingsystemrelease -%> |

^ Kernel-Version | <%= kernelrelease -%> |

^ Zeitzone | <%= timezone -%> |

==== Network ====

^ Interfaces | <%= interfaces -%> |

^ IPs | <%= ipaddress -%> |

^ MACs | <%= macaddress -%> |

==== Zugewiesene Puppet Klassen ====

<% classes.each do |klass| -%>

<%= klass -%> \\

<% end -%>

http://www.nagios-wiki.de/nagios/howtos/wiki_hardware

Page 44: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 46 / 4746 / 47

Praxis-Beispiele zur Nutzung von Puppet für eine automatische

Dokumentation

Praxis-Beispiele zur Nutzung von Puppet für eine automatische

Dokumentation

Page 45: Konfigurationsmanagement mit Puppet - checkmk.com · (Logging + Auditing + Compliance) Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen

19.10.2014 / München19.10.2014 / München1. Check_MK Konferenz

© Sascha Brechmann

1. Check_MK Konferenz

© Sascha Brechmann 47 / 4747 / 47

ENDEENDE

Fragen ???