Foreman CeBIT 2015 19. März 2015 Mattias Giese System Management & Monitoring Architect giese@b1-systems.de - Linux/Open Source Consulting, Training, Support & Development
Vorstellung B1 Systems gegründet 2004 primär Linux/Open Source-Themen national & international tätig über 60 Mitarbeiter unabhängig von Soft- und Hardware-Herstellern Leistungsangebot: Beratung & Consulting Support Entwicklung Training Betrieb Lösungen dezentrale Strukturen Foreman 2 / 53
Schwerpunkte Virtualisierung (XEN, KVM & RHEV) Systemmanagement (Spacewalk, Red Hat Satellite, SUSE Manager) Konfigurationsmanagement (Puppet & Chef) Monitoring (Nagios & Icinga) IaaS Cloud (OpenStack & SUSE Cloud & RDO) Hochverfügbarkeit (Pacemaker) Shared Storage (GPFS, OCFS2, DRBD & CEPH) Dateiaustausch (owncloud) Paketierung (Open Build Service) Administratoren oder Entwickler zur Unterstützung des Teams vor Ort Foreman 3 / 53
Überblick über verwendete Komponenten Foreman 4 / 53
Verwendete Komponenten Foreman 5 / 53
Foreman Kurzvorstellung Foreman 6 / 53
Foreman 1/2 System Lifecycle Management Software Benutzung via Web-UI/CLI/Restful API modular aufgebaut kann DHCP/DNS/TFTP/Puppet/Puppet CA verwalten teilweise Support von Chef (Reports) Zukunft: Support von cfengine Foreman 7 / 53
Foreman 2/2 Provisionierung von virtuellen Maschinen (libvirt, VMWare) Cloud: AWS, OpenStack, GCE, ovirt, RHEV Steuerung von ilo/drac/andere installierbar auf RHEL/Fedora/Debian/Ubuntu Foreman 8 / 53
Foreman Architektur Foreman 9 / 53
Foreman Komponenten erweiterbar durch Plugins Foreman Discovery: Metal as a Service Hooks: Beliebigen Code in verschiedenen Phasen ausführen Foreman 10 / 53
Foreman Discovery besteht aus zwei Teilen Plugin für Foreman Web-Applikation Livesystem basierend auf ovirt-node Foreman 11 / 53
Foreman GUI: Dashboard Foreman 12 / 53
Foreman GUI: Hosts Overview Foreman 13 / 53
Foreman GUI: Hosts Detail Foreman 14 / 53
Foreman GUI: Puppet Overview Foreman 15 / 53
Foreman GUI: Puppet Reports Overview Foreman 16 / 53
Foreman GUI: Puppet Report Detail Foreman 17 / 53
Foreman GUI: Puppet Classes Overview Foreman 18 / 53
Icinga Kurzvorstellung Foreman 19 / 53
Icinga Fork des Monitoringsystems Nagios (2009) Kompatibel mit Nagios-Konfiguration und Plugins verbessertes CGI Interface sowie neue Oberfläche Icinga-Web zusätzliche Bugfixes und Features, die nicht in Nagios aufgenommen wurden Foreman 20 / 53
Icinga CGI GUI: Services Foreman 21 / 53
Icinga CGI GUI: Hosts Down Foreman 22 / 53
Logstash Kurzvorstellung Foreman 23 / 53
Logstash 1/2 komplette Log-Infrastruktur unterstützt eine Vielzahl von Protokollformaten durch Filter einfach zu implementieren Foreman 24 / 53
Logstash 2/2 benutzt Elasticsearch für Datenhaltung skaliert horizontal (Indexer, Elasticsearch, Redis) Kibana3 ist eine sehr flexible GUI zur Visualisierung der Logs Foreman 25 / 53
Logstash Inputs file: Normale Datei syslog: lauscht auf Port 514 und kann somit Ziel von rsyslog/syslog-ng usw. sein lumberjack: Input für eigenen Transportmechanismus (logstash-forwarder)... Foreman 26 / 53
Logstash Filters grok: Regexes auf Steroiden. Vorgefertigte Pattern erleichtern die Benutzung von Regex mutate: Log nachträglich anpassen geoip: z. B. das Land zu einer IP-Adresse im Log herausfinden.... Foreman 27 / 53
Logstash Outputs elasticsearch: Empfohlen für Produktiveinsatz (und für Kibana) file: In Datei schreiben graphite: Output nach Graphite für Graphing... Foreman 28 / 53
Kibana3: Log Search and Filters Foreman 29 / 53
Kibana3: IRC Log Example Foreman 30 / 53
Kibana3: Twitter Example mit Geo-IP Foreman 31 / 53
Puppet Kurzvorstellung Foreman 32 / 53
Puppet 1/2 Konfigurationsverwaltungssystem Entwicklung seit 2005 durch Puppet Labs eine der drei Großen neben cfengine/chef unterstützt verschiedene Unixe/Linux, Windows Community und Enterprise Variante Foreman 33 / 53
Puppet 2/2 implementiert eine Modellsprache auf Ruby wir beschreiben, was getan werden soll, nicht wie führt nur benötigte Änderungen am System durch abstrahiert Unterschiede zwischen Distributionen/Betriebssystemen dynamische Konfiguration basierend auf Hardware/Softwareinfo (facter) Foreman 34 / 53
Einfaches Manifest Einfaches Manifest file{ /etc/myservice.conf : ensure => present, content => Hallo Welt\n, owner => root, group => root, mode => 644, } package{ firefox : ensure => present, } Foreman 35 / 53
Abstraktion des Codes Ressource: Datei, Paket, Dienst, Benutzer, Gruppe, usw. Manifest: Datei mit Endung.pp enthält ein oder mehrere Ressourcen Anwendung: puppet apply myconfig.pp Klassen bündeln Ressourcen, z.b.: Paket, Datei und Dienst Module bündeln Klassen Foreman 36 / 53
Einfache Klasse Einfache Klasse class sshserver() { package{ openssh : ensure => present, } file{ /etc/ssh/sshd_config : ensure => present, source => puppet:///sshd_config, [...] notify => Service[ sshd ], require => Package[ openssh ], } service{ sshd, ensure => running, enable => true, } } Foreman 37 / 53
Einstieg in PuppetDB Foreman 38 / 53
PuppetDB Data Warehouse für Puppet Ablösung für altes storeconfigs Konzept Deduplizierung der gesammelten Daten bietet Restful-API für Abfragen Anwendungsfall: Exportierte Ressourcen Web-UI: PuppetBoard Foreman 39 / 53
PuppetDB Exportierte Ressourcen am Beispiel von Monitoring Ressourcen werden auf den zu überwachenden Systemen eingesammelt (exportiert) exportierte Ressourcen werden in PuppetDB gespeichert exportierte Ressourcen werden dann auf dem Monitoringsystem (Icinga) angewendet Foreman 40 / 53
PuppetDB Exportierte Nagios Host Ressource @@nagios_host{"nagios_${::hostname}": ensure => present, address => "$::ipaddress", host_name => "$::fqdn", check_command => check_ping!100.0,20%!500.0,60%, display_name => "$::fqdn", max_check_attempts => 3, use => generic-host, target => \ "/etc/icinga/conf.d/service_ssh_${::hostname}.cfg", } Foreman 41 / 53
PuppetDB Anwenden der exportierten Ressourcen # Collect all exported monitoring resources if $::monitoring_server == $::fqdn { Nagios_Host<< >> { } Nagios_Service<< >> { } Foreman 42 / 53
Beispielabfragen Beispielabfragen Alle Nodes mit Debian ["and", ["=", "name", "operatingsystem"], ["=", "value", "Debian"]] Uptime zwischen ca. 28h und ca. 12d ["and", ["=", "name", "uptime_seconds"], [">=", "value", 100000], ["<", "value", 1000000]] Foreman 43 / 53
PuppetDB Dashboard 1/2 Foreman 44 / 53
PuppetDB Dashboard 2/2 Foreman 45 / 53
Spacewalk Kurzvorstellung Foreman 46 / 53
Spacewalk Kurzvorstellung System Lifecycle Management Software (2002) Grundlage für RH Satellite bis 5.x und SUSE Manager seit 2008 offenes Software Projekt (GPL2) unterstützt RHEL/SUSE (und Derivate), teilweise Debian/Ubuntu (nur Softwareverwaltung) Foreman 47 / 53
Spacewalk Features 1/2 Provisionierung von Systemen (Anbindung an Cobbler) Steuerung von Hypervisoren (KVM/Xen) Softwaremanagement mit Channelstruktur Staging (Einfrieren bestimmter Versionsstände) einfache Konfigurationsverwaltung Ausführung von Skripten auf verwalteten Maschinen Foreman 48 / 53
Spacewalk Features 2/2 zeitgesteuerte Ausführung von Aufgaben Monitoring Verwaltung von Crashes (abrt) OpenSCAP Einbindung (Software-Auditing) Bedienung durch Web-UI/CLI/XMLRPC-API Foreman 49 / 53
Spacewalk: GUI Overview Foreman 50 / 53
Spacewalk: System Details Foreman 51 / 53
Spacewalk: Channel Overview Foreman 52 / 53
Vielen Dank für Ihre Aufmerksamkeit! Bei weiteren Fragen wenden Sie sich bitte an info@b1-systems.de oder +49 (0)8457-931096. Besuchen Sie uns auch hier auf der CeBIT, Halle 6, H16/312. - Linux/Open Source Consulting, Training, Support & Development