Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Config-MGMT / Puppet Grundlagen

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for mc-chaos mc-chaos
November 20, 2014

Config-MGMT / Puppet Grundlagen

Vortrag zu den Grundlagen und zur Nutzung des Config Management Systems Puppet. Gehalten von Sascha Brechmann

Avatar for mc-chaos

mc-chaos

November 20, 2014
Tweet

More Decks by mc-chaos

Other Decks in Technology

Transcript

  1. 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
  2. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 2 / 47 2 / 47 whoami whoami Vita: Sascha Brechmann • Linux-User seit Debian „Bo/Hamm“ • Nagios-User seit 2005 • Puppet-User seit 2010 • Check_MK User seit 2010/2011
  3. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 3 / 47 3 / 47 Konfigurationsmanagement mit Puppet Konfigurationsmanagement 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
  4. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 4 / 47 4 / 47 Grundlagen des Konfigurationsmanagement Grundlagen 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“
  5. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 5 / 47 5 / 47 Was ist Konfigurationsmanagement Was 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
  6. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 6 / 47 6 / 47 Was ist Konfigurationsmanagement Was 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
  7. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 7 / 47 7 / 47 Ziele des Konfigurationsmanagement Ziele des Konfigurationsmanagement • Einheitlichkeit Eine Konfigurations-Regel soll bei allen betroffenen Systemen immer zum gleichen Ergebnis führen. D.H. Server(/Rollen) sind nicht mehr unterschiedlich! • Überprüfbarkeit Es 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) • Nachvollziehbarkeit Jede Änderung wird Protokolliert und kann g.g. wieder zurück genommen werden. (Change-Log + Rollback)
  8. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 8 / 47 8 / 47 Warum macht man ein Konfig.Mgmt Warum 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) ]
  9. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 9 / 47 9 / 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
  10. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 10 / 47 10 / 47 Konfigurationsmanagement Framework Konfigurationsmanagement 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)
  11. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 11 / 47 11 / 47 Vorteile von Konfigurationsmanagement Software Vorteile 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 (automatisches) Dokumentation
  12. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 12 / 47 12 / 47 Konfigurationsmanagement mit Puppet Konfigurationsmanagement 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
  13. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 13 / 47 13 / 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
  14. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 14 / 47 14 / 47 Was sollte man nicht mit einem Konf.Mgmt Framework machen Was 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
  15. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 15 / 47 15 / 47 Konfigurationsmanagement mit Puppet Konfigurationsmanagement 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
  16. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 16 / 47 16 / 47 Best Practices beim Umgang mit Puppet Best Practices beim Umgang 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
  17. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 17 / 47 17 / 47 Konfigurationsmanagement mit Puppet Konfigurationsmanagement 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
  18. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 18 / 47 18 / 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
  19. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 19 / 47 19 / 47 Konfigurationsmanagement mit Puppet Konfigurationsmanagement 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
  20. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 21 / 47 21 / 47 Organisation von Puppet- Konfiguration Organisation von Puppet- Konfiguration • Klassen sind kleine Konfigurations-Einheiten, z.B. Apache-Package Installation • Module bestehen aus mehreren Klassen Technical-View, z.B. Apache-Module • Profile enthalten „konfigurierte“ Module Organisation-View, z.B. Apache-Vhost • Rollen sind eine Sammlung von Profilen Business-View, z.B. Webshop auf Apache
  21. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 22 / 47 22 / 47 Konfigurationsmanagement mit Puppet Konfigurationsmanagement 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
  22. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 23 / 47 23 / 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
  23. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 24 / 47 24 / 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
  24. © Sascha Brechmann © Sascha Brechmann 26 / 47 26

    / 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 +=[ „host.example.de|CG_DEFAULT | CG_customer | x86_64|... Puppet Tags im host.erb Template Puppet Tags im host.erb Template Facter Fact
  25. © Sascha Brechmann © Sascha Brechmann 27 / 47 27

    / 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 Template Puppet Tags im host.erb Template if; than; else Schleife
  26. © Sascha Brechmann © Sascha Brechmann 28 / 47 28

    / 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 Template Puppet Tags im host.erb Template Transformation einer Variable
  27. © Sascha Brechmann © Sascha Brechmann 29 / 47 29

    / 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 Template Puppet Tags im host.erb Template Überprüfung ob eine Variable gesetzt ist
  28. © Sascha Brechmann © Sascha Brechmann 30 / 47 30

    / 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 Template Puppet Tags im host.erb Template Puppet-Array
  29. © Sascha Brechmann © Sascha Brechmann 31 / 47 31

    / 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 Template Puppet Tags im host.erb Template Custom Puppet-Fact, welcher alle Puppet-Klassen eines Hosts enthält. ->/var/lib/puppet/classes.txt
  30. © Sascha Brechmann © Sascha Brechmann 32 / 47 32

    / 47 extra_host_conf['alias'] += [ ( '<%= hostname -%>', ['<%= fqdn -%>'], ), ] Beispiel: extra_host_conf['alias'] += [ ('db-host', ['db-host.example.de'],), ] Puppet Tags im host.erb Template Puppet Tags im host.erb Template Setzen von host-spezifischem Alias
  31. © Sascha Brechmann © Sascha Brechmann 33 / 47 33

    / 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 Template Puppet Tags im host.erb Template
  32. © Sascha Brechmann © Sascha Brechmann 34 / 47 34

    / 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
  33. © Sascha Brechmann © Sascha Brechmann 35 / 47 35

    / 47 Advance Agent-Usage Advance 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
  34. © Sascha Brechmann © Sascha Brechmann 36 / 47 36

    / 47 Check_MK MRPE Check_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
  35. © Sascha Brechmann © Sascha Brechmann 37 / 47 37

    / 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
  36. © Sascha Brechmann © Sascha Brechmann 38 / 47 38

    / 47 Host_Parents Host_Parents • Puppet kennt das Netz und das default GW – 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 ), ]
  37. © Sascha Brechmann © Sascha Brechmann 39 / 47 39

    / 47 Hosts-Groups Hosts-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)
  38. © Sascha Brechmann © Sascha Brechmann 40 / 47 40

    / 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_Checks Plugin_Checks #!/bin/bash /bin/echo '<<<systemtime>>>' /bin/date '+%s'
  39. © Sascha Brechmann © Sascha Brechmann 41 / 47 41

    / 47 Weitere Plugin_Checks Weitere Plugin_Checks • apache_status / nginx_status • check_puppet (Status des Puppet-Agent) • mk_logwatch • mk_postgres / mk_mysql • mk_job (Überwachung von Cronjobs)
  40. © Sascha Brechmann © Sascha Brechmann 42 / 47 42

    / 47 Weitere Plugin_Checks Weitere 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)
  41. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 43 / 47 43 / 47 Konfigurationsmanagement mit Puppet Konfigurationsmanagement 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
  42. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 44 / 47 44 / 47 Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation
  43. © Sascha Brechmann © Sascha Brechmann 45 / 47 45

    / 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
  44. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 46 / 47 46 / 47 Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation Praxis-Beispiele zur Nutzung von Puppet für eine automatische Dokumentation
  45. 19.10.2014 / München 19.10.2014 / München 1. Check_MK Konferenz ©

    Sascha Brechmann 1. Check_MK Konferenz © Sascha Brechmann 47 / 47 47 / 47 ENDE ENDE Fragen ???