Lifecycle-Management mit Foreman und Katello Grundlagen und Spacewalk-Migration Christian Stankowic www.stankowic-development.net Free and Open Source software Conference 19.08.2017
Lifecycle-Management mit Foreman
und KatelloGrundlagen undSpacewalk-Migration
Christian Stankowicwww.stankowic-development.net
Free and Open Source softwareConference19.08.2017
whoami
Christian Stankowic
VMware Global Inc.
Senior PSO Consultant
Blogger & Fachbuchautor
2
AGENDA
Agenda
Überblick
Installation
Content-Management
Puppet
Automatisierung
Spacewalk-Migration
4
ÜBERBLICK
Was ist Foreman?
Quelloffene Lifecycle-Management-Suite
Erstellung, Konfiguration undInventarisierung1 von Systemen
Unterstützt Konfiguration mittels Puppetoder optional2 Chef, Salt und Ansible
1. Facts, system profiling2. per Plugin
6
facter
1 $ facter -p
2 architecture => x86_64
3 domain => stankowic.loc
4 interfaces => docker0,ens192,lo
5 ...
6 memoryfree => 1.14 GB
7 processor0 => Intel(R) Xeon(R) CPU D-1518
@ 2.20GHz
8 virtual => vmware
Listing 1: Ausgabe von facter7
Plugins
Derzeit ca. 100 Plugins online verfügbar
Einige Beispiele:
CockpitMonitoringJenkins CISlackDrittanbieter DNS-/DHCP
8
Virtualize _all_ the workloads
Integration in gängige Hypervisor- undCloud-Plattformen:
VMware vSphere3oVirtAmazon EC2Microsoft AzureXENOpenStack, OpenNebula
3. ESXi und vCenter Server
9
Weitere Features
rollenbasierte Konfiguration
Mandantenfähig
Integration in LDAP, FreeIPA und MicrosoftActive Directory Domain Services
Verteilen von Infrastruktur-Diensten inSatelliten-Instanzen
Gut dokumentierte RESTful API zurAutomatisierung
10
Was ist Katello?
Content Management-Plugin für Foreman
Vereint die Software-Projekte Pulp undFiction Candlepin
Synchronisation von OSTree-/RPM-Paketen4
und Docker-/Puppet-Modulen
4. DEB-Unterstützung in Arbeit
11
Weitere Features
Verwaltung von Errata
Verwaltung von Subskriptionen undKanal-Berechtigungen
Snapshots, Einfrieren von Inhaltsbeständen(z.B. Dev, QA, Prod)
12
13
Foreman/Katello vs. Satellite 6
Foreman RHS6Releases 1-2 Monate 11 MonatePuppet-Version
4.x 3.65
Server OS $Linux RHELSupport × ✓6
Orchestration Smart Proxy CapsuleRHN × ✓7
5. Puppet 4.x ab Release 6.36. Verwendung über CLI, WebUI und API, keine Fremd-Plugins; siehe auch Dokumentation7. Über Subscription Manager
14
INSTALLATION
Installation
Foreman ist vorkompiliert erhältlich für:Debian 8Fedora 24Ubuntu 14.04 / 16.04Enterprise Linux (RHEL, CentOS, SL) 7
Katello-Pakete lediglich für EL6 / 7 x86_64!
16
Anforderungen
mindestens 2 Cores
mindestens 8 GB RAM (12 empfohlen)
30 GB Speicherplatz pro Betriebssystemempfohlen
siehe auch: theforeman.org/plugins/katello
17
Vorbereitung
Dedizierte Dateisysteme:/var/spool/squid (Cache, 10 GB)/var/lib/mongodb (Katello, 10 GB, inodes!)/var/lib/pulp (Content, 30 GB)/var/lib/pgsql (Foreman, 10 GB)
Netzwerk-Ports öffnen:http/https
tcp/5647 - Client-Kommunikationtcp/9090 - Smart Proxy / Capsule
18
Software-Installation 1/2
Einbinden von Software-Quellen je nachDistribution (Katello, Foreman, Puppet,...)
Installation des katello Paketsberücksichtigt Abhängigketen
Snapshot anlegen!
foreman-installer konfiguriert benötigteDienste automatisch
19
Software-Installation 2/2
Zusatzoptionen evaluieren:foreman-installer --scenario katello -h
1 # foreman-installer --scenario katello --
foreman-initial-organization ”Stankowic”
--foreman-initial-location ”Homelab”
Listing 2: Installation mit angepasster Organisationund Location
20
21
CONTENT
Spacewalk
Parent- und Child-Channels mit 1+Repositories
Systemen werden Parent- und optionalenChild-Channels zugewiesen
Automatische Zuordnung perAktivierungsschlüssel möglich
23
Foreman/Katello
Productmit 1+ Repositories
Versionsstände werden in Content Viewseingefroren
Content View enthält 1+ Repositories8
Content View kann YUM-Filter enthalten
8. YUM-, Datei-, Docker- oder Puppet-Inhalte
24
25
YUM-Filter
Einbeziehen oder Ausschließen von:PaketenPaketgruppenErrata (anhand ID, Datum oder Typ)
Ideal für feste Wartungsfenster (z.BQ1-Updates)
Filter können auch kombiniert werden
26
27
Composite Content View
kombiniert mehrere Content Views in einemView
ideal, wenn OS- und Applikationspaketegetrennt versioniert werden
Filter werden überschrieben
28
29
Lifecycle Environments
Systeme können nach Umgebungenunterteilt werden9, z.B.:
DevQAProd
Content View-Versionen werdenUmgebungen zugeordnet
9. Standardmäßig gehören alle Systeme Library an
30
Patch-Freigabe
Neue Patches importieren, Content Viewaktualisieren10
Freigabe der Patche für Dev (promoten)11
Patche werden getestet
Freigabe der Patche für QA
Freigabe der Patche für Prod
siehe auch katello-cvmanager
10, 11. manuell oder per API (z.B. hammer)
31
32
33
34
35
36
37
38
PUPPET
40
Puppet in a nutshell
Client-/Server-Applikation12
Master konfiguriert und steuert Agenten
Manifeste definieren gewünschteKomponenten-Zustände13
Modulare Manifeste mit Facts
12. Auch ohne zentralen Server nutzbar13. Systemparameter, Dienste, Konfigurationen...
41
Resource Abstraction Language 1/2
Definition von Stati innerhalb Manifest
Unzählige Ressource-Typen: file, service,user,...14
Auflisten von Optionen pro Ressource:puppet describe resourceType
Beschreiben einer vorhandenen Ressource:puppet resource resourceType name
14. Auflisten mit puppet resource --types
42
Resource Abstraction Language 2/2
1 $ puppet describe service
2 $ puppet resource service httpd
3 service { ’httpd’:
4 ensure => ’started’,
5 enable => ’true’,
6 }
Listing 3: Informationen zu Services sowieBeschreibung eines Services
43
Puppet manifests in a nutshell
1 $ cat httpd.pp
2 package { ”httpd” :
3 ensure => ”installed”,
4 }
5 # puppet apply httpd.pp
6 ...
7 Notice: Finished catalog run in 8.03
seconds
Listing 4: Manifest zur Installation von Apache44
Puppet manifests in a nutshell
1 $ cat httpd-file.pp
2 package { ”httpd” :
3 ensure => ”installed”,
4 }
5 file { ’/var/www/html/index.html’’:
6 content => ”Yes this is $hostname”
7 }
8 # puppet apply httpd-file.pp
Listing 5: Apache-Manifest mit Datei und fact45
Foreman -Master of Puppets?
Foreman integriert Puppet Master und CA15
Puppet-Dashboards16
Konfiguration von Klassen, Variablen,...
Gruppierung von Klassen in Config Groups
Environment pro Lifecycle Environment
Overrides pro Host bzw. Hostgroup
15. auf dem Master bzw. den Smart Proxies/Capsules16. Aktivität und Kompliance
46
47
48
49
50
51
52
Drittanbieter-Module
Place to be: Puppetforge
Kopie heruntergeladener Puppet-Module inPuppet-Produkt, Aktualisierung des ContentViews
unbedingt Abhängigkeiten undAnforderungen überprüfen17
17. RHNS6 < 6.3 nutzt noch Puppet v3!
53
54
AUTOMATE
API
Foreman und Katello bieten eine gutdokumentierte REST-API
Schnelle Integration in eigeneAnwendungen
Dokumentation online und auf eigenemServer18
18. http://hostname/apidoc
56
hammer
umfangreiches Tool zur Steuerung vonForeman, Katello, Docker,...
erweiterbar, auto-completion
Verwalten von lokalen oder entfernenSystemen
mehr als 50 Kommandos19
19. für Foreman und Katello
57
Beispiel: Update _all_ the repos
1 $ hammer content-view update --async --
name CentOS_7
2 $ hammer content-view publish --async --
name CentOS_7
3 $ hammer content-view version promote --
organization Stankowic --to-lifecycle-
environment Dev --name CentOS_7
Listing 6: Aktualisieren und Veröffentlichen einesContent Views
58
Maintenance: Status quo
Wartungsarbeiten sind in größerenUmgebungen i.d.R. komplexer:
Erstellen von SnapshotsAusplanen des MonitoringsDokumentieren der ÄnderungenLöschen von Snapshots...
Vorarbeiten und Dokumentationumfangreicher als Wartung
59
60
katprep
Python-Toolkit, automatisiert Wartungen
Vorbereiten, Warten und Bereinigen vonSystemen mit einzelnen Befehlen
Changelogs mit Pandoc20
integriert sich in gängige Hypervisor undMonitoring-Systeme:
KVM, XEN, Hyper-V,... (libvirt)VMware vSphere (pyVmomi)Nagios/Icinga 1.x und Icinga2
20. derzeit Vorlagen für Markdown und HTML
61
katprep
unterstützt verschiedene Filter21
startet Systeme automatisch neu, falls einUpdate dies erfordert
Konfiguration über System-Parameter22
automatischer Abgleich mitVM-/Monitoring-Systemen möglich(auto-discovery)
Join the development: GitHub21. Organisation, Location, Hostgruppe, Environment22. Snapshots, Monitoring,...
62
Installation
Toolkit herunterladen und installieren
Zugangsdaten eintragen
Informationen automatisch erkennenlassen oder gestapelt eintragen
Wartung (simulieren)
63
Kommandos
Zugangsdaten pflegen: katprep_authconfig
Parameter erkennen/setzen:katprep_populate / katprep_parameters
System-Bestandsaufnahme:katprep_snapshot
Wartungen steuern: katprep_maintenance
Reports erstellen: katprep_report
64
Vorgehensweise
Bestandsaufnahme durchführen
Wartung vorbereiten, durchführen undüberprüfen
Erneute Bestandsaufnahme durchführen
Reports erstellen
Über gesparte Zeit freuen :-)
65
katprep_maintenance
Mit -n / --dry-run arbeiten!
Wartung vorbereiten: prepare
Installation durchführen: execute
Status überprüfen: verify
Snapshots, etc. entfernen: cleanup
Verwerfen: rollback23
23. noch nicht implementiert
66
67
MIGRATION
Unterschiede zu Spacewalk
Spacewalk ForemanDatenbank PGSQL, Oracle MongoDB +
PGSQLClient OS RPM RPM, DEB24
Konfiguration custom25 PuppetSoftware Kanal : Repos Repos : Prod-
ucts : CVsAktivierung Manuell, SchlüsselOrchestration Proxy Capsule
24. Foreman-only, experimenteller Pulp-Support25. SUSE Manager implementiert Salt
69
Passive Vorgehensweise
Installation eines neuen Systems
Abbilden der Software-Quellen und-Zustände
Erstellen der Konfigurationen anhandTest-Systeme
Sukzessive Migration der Systemesiehe auch Transitioning from Red Hat Satellite 5 to 6
70
Registrieren neuer Clients
Ausführen des Bootstrap-Skripts26
Installation von Puppet und katello-agent27
Zuweisen/Überprüfen von Subskriptionen
Aktualisieren von weiteren Informationen28
26. http://server/pub/bootstrap.py27. Zur Überprüfung installierter Errata28. Besitzer, Hostgruppen, katprep,...
71
Bootstrap
Registriert neue Systeme
Entfernen von RHN-Altlasten(yum-rhn-plugin, rhnsd, osad,...)
Migriert Systeme von Spacewalk und RedHat Satellite 5
Optional Angabe von Aktivierungsschlüssel,Hostgruppe, Organization,...
72
Dr. virt-who 1/2
RHEL-Systeme erhalten lediglich einetemporäre wibbly-wobbly Subskription29,wenn die Lizenz nicht validiert werden kann
bei virtualisierten Systemen werdenHypervisor30 als Content-Hosts geführt
Überprüfung der Subskription mittelssubscription-manager31
29. maximal 24 Stunden30. VMware vSphere, Red Hat Enterprise Virtualization und Microsoft Hyper-V31. siehe auch Dokumentation
73
Dr. virt-who 2/2
virt-who32 überprüft Host-VM-Zuordnungenmit verknüpften Manifest
Dienst ist über Lizenzen und Installationeninformiert
Wirkt Unterlizensierung entgegen
Zuweisung einzelner Lizenzverträge imBackend möglich
32. RE-GIS-TRATE!
74
Temporäre Subskription
1 # subscription-manager status
2 ...
3 Overall Status: Insufficient
4 ...
5 - Guest has not been reported on any host
and is using a temporary unmapped
6 guest subscription.
Listing 7: Temporäre Zuordnnung aufgrund fehlenderLizenz-Validierung
75
FRAGEN?
Links
Foreman-Webseite
Katello-Plugin
Red Hat Satellite 6-Dokumentation
Puppetforge
katprep-Framework
Foreman-/Katello-Artikelserie
77
Vielen Dank für die Aufmerksamkeit!
http://www.stankowic-development.net
78