SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 1 / 33© SpeedPartner GmbH
System-Management-Trio
Zentrale Verwaltung mit
facter, puppet und augeas
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 2 / 33© SpeedPartner GmbH
Über den Vortrag
Aufbau / Ziele:
● Einführung / Überblick
● Begriffsklärung
● Aufbau / Arbeitsweise von Manifests
● Templates, Klassen, Typen, Module
● Facter: Umgebungsparameter ermitteln
● Augeas: Konfigurationen bearbeiten
● Client-Server-Betrieb
● Arbeit mit mehreren Umgebungen
● Links / Hilfen
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 3 / 33© SpeedPartner GmbH
Über mich
● Stefan Neufeind
● Mit-Geschäftsführer der SpeedPartner GmbH aus Neuss
ein Internet-Service-Provider (ISP)
● Individuelle TYPO3-Entwicklungen
● Hosting, Housing, Managed Services
● Domains / Domain-Services
● IPv6, DNSSEC, ...
● Aktive Mitarbeit im Community-Umfeld (PHP/PEAR, TYPO3, Linux)
● Freier Autor für z.B. t3n, iX, Internet World, ...
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 4 / 33© SpeedPartner GmbH
Aufgabenstellung
Alltägliche Administrationsaufgaben für ein (Server-)System
Basisinstallation
Einrichtung /
Konfiguration
Individuelle
Anpassungen
Fehlersuche /
Fehlerkorrektur
Zugänge
Netzwerk
Backup
Systemstatistiken
Monitoring
Virtuell?
Architektur
RAID?Aufgaben
Fehler bei Ausführung von
„Standard-Aufgaben“?
Fehler durch die
„Sonderlösungen“?
Konzeptfehler?
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 5 / 33© SpeedPartner GmbH
Aufgabenstellung
Herausforderungen bei Administration mehrerer Systeme
● Einsparungen (Zeit und Kosten)
● Minimierung von Fehlern
● Einheitliche Konfiguration
● Einfache Anpassbarkeit
● Zentral?
● Automatisiert?
Umsetzung erfordert:
● Klare Regeln / Entscheidungsgrundlagen
● Abgleich Vorgaben und Realität
● Strukturierte Herangehensweise
● Unterstützung durch geeignete Hilfsmittel
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 6 / 33© SpeedPartner GmbH
Vorstellung System-Management-Trio
Das „System-Management-Trio“ bestehend aus:
● Puppet
● Facter
● Augeas
● Zentrale Komponente
● Definiert Regeln, Abhängigkeiten, Aktionen, ...
● Vorgaben basierend auf Fakten
● Abgleich Planung / Vorgaben und Realität
● Liefert „Fakten“ für Puppet
● Ermittelt Umgebungsparameter
● Bereitstellung in einheitlicher Form
● Anpassung von Konfigurationen
● Abstraktion für Zugriff auf Konfigurationseinstellungen
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 7 / 33© SpeedPartner GmbH
Vorstellung System-Management-Trio
Zentrale Begriffe im puppet-Umfeld:
● Manifests:
● „Verzeichnis“ von Objekten, Eigenschaften und Beziehungen
● Dateiendung: .pp
● Ressourcen:
● Definition über den „Ressource abstraction layer“ (RAL)
● Beziehen sich auf Entsprechungen im System
● Unabhängig z.B. vom verwendeten Paketmanager
● Zentrale Ressourcentypen: Dateien, Pakete, Dienste, Benutzer/Gruppen
● Bestehend aus einem „Titel“ und „Attributen“
● Jede Ressource eindeutig
● Modellierung von Abhängigkeiten, Reihenfolge der Definition beliebig
● Puppet auto-generiert sinnvolle Reihenfolgen
(z.B. erst Verzeichnisse anlegen, dann darin enthaltene Dateien)
● Knoten („nodes“):
● Sammlung von Ressourcen
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 8 / 33© SpeedPartner GmbH
Vorstellung System-Management-Trio
Zentrale Begriffe im puppet-Umfeld:
● Templates:
● Vorlagen für Ressourcentyp Datei („file“)
● Ausgabe auf Basis von Variablen (Fakten), Kontrollstrukturen
und umgebeneder Notation
● Notation mit Hilfe von ERB
(eine Implementierung von „embedded ruby“, auch eRuby genannt)
● Module:
● Sammlung von Code und Daten
● Einheitliche Verzeichnis-/Dateistruktur
● Wiederverwendbar
● Fertige Module für verschiedene Einsatzzwecke
verfügbar (siehe z.B. auf „Puppet Forge“)
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 9 / 33© SpeedPartner GmbH
Manifests und Ressourcen
Notation in „Manifests“:
● Puppet-eigene Syntax
● Zeichenketten in einfachen Hochkommata ('...') oder Anführungszeichen (“...”)
● Hochkommata: keine weitere Verarbeitung der Inhalte
● Anführungszeichen: Ersetzung von z.B. Zeilenumbrüche (“n”), Variablen (“${fileame}”)
oder Platzhaltern (wie z.B. $0, $1, ... bei der Verwendung von regulären Ausdrücken)
● Listen von Werten (Arrays): in eckigen Klammern, Werte mittels Kommas getrennt
file { '/etc/my.cnf':
ensure => file,
mode => 600,
source => '/home/demo/my.cnf',
}
Ressourcen-Typ gefolgt von
Block in geschweifte Klammern
Block mit eindeutigem Titel
(je Ressourcen-Typ)
gefolgt von Doppelpunkt
Definierte Werte /
Zahlen ohne
Klammerung
Notation mit key => value
Attribute mit
Komma getrennt
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 10 / 33© SpeedPartner GmbH
Manifests und Ressourcen
Arbeitsweise von „Manifests“:
● Definitionen von Eigenschaften, keine sequentielle „Abarbeitung“ / Reihenfolge
● Keine Löschung / Überschreibung von einmal definierten Ressourcen
oder zugewiesene Variablen
● Compiler löst vor Anwendung der Definitionen etwaige Bedingungen auf
● Notwendige Reihenfolge (Abhängigkeiten) von Ressourcen
bei Definition von Ressourcen angeben
Beispiel:
Installation
eines Pakets
Anpassung
Konfigurationsdateien
Starten
zugehöriger
Dienste
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 11 / 33© SpeedPartner GmbH
Manifests und Ressourcen
Abhängigkeiten zwischen Ressourcen:
● Definitionen über Meta-Parameter innerhalb Ressourcen-Definitionen
● 'before': diese Ressource vor der angegebenen berücksichtigen
● 'require': diese Ressource nach der angegebenen berücksichtigen
● 'notify': ein/mehrere andere Ressourcen benachrichtigen
(sofern Änderungen durchgeführt wurden)
● 'subscribe': auf Änderungen einer anderen Ressource reagieren
● Explizite Definition (separate Zeile in Manifest)
● Angabe einer Reihenfolge
(Pfeil mit Bindestrich)
● Angabe einer Benachrichtigung
(Pfeil mit Tilde)
package { 'mysql-server': } -> file { '/etc/my.cnf': }
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 12 / 33© SpeedPartner GmbH
Manifests und Ressourcen
Das erste Manifest:
● Notation in einer beliebigen Datei (hier: demo1.pp)
● Anwenden des Manifest auf das System
package { 'mysql-server':
ensure => present,
}
file { '/etc/my.cnf':
ensure => file,
mode => 600,
source => '/home/demo/my.cnf',
}
service { 'mysqld':
ensure => running,
enable => true,
hasrestart => true,
hasstatus => true,
subscribe => File['/etc/my.cnf'],
require => Package['mysql-server'],
}
puppet apply demo1.pp
Dienst soll (aktuell) gestartet sein
Dienst soll automatisch starten
Startskripte unterstützen „restart“ / „status“
Bei Änderungen an Datei restart
Paket muss installiert sein
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 13 / 33© SpeedPartner GmbH
Facter
Fakten und Entscheidungen:
● Testweise händischer Aufruf von „Facter“ für Übersicht Eigenschaften (Auszug)
# facter
architecture => x86_64
augeasversion => 0.10.0
domain => example.com
facterversion => 1.6.6
fqdn => demohost.example.com
hostname => demohost
is_virtual => true
virtual => kvm
kernel => Linux
kernelmajversion => 2.6
kernelrelease => 2.6.18-308.1.1.el5
kernelversion => 2.6.32
manufacturer => Red Hat
operatingsystem => CentOS
operatingsystemrelease => 5.8
osfamily => RedHat
physicalprocessorcount => 4
processorcount => 4
uptime_hours => 136
uptime_seconds => 490098
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 14 / 33© SpeedPartner GmbH
Facter
Fakten und Entscheidungen:
● Facter ermittelt Fakten über das System
● Facter-Module stellen Daten in Variablen zur Verfügung
● Fakten können für Entscheidungen innerhalb des Manifest genutzt werden
● Standardoperationen (==, !=, <, >, <=, >=)
● Reguläre Ausdrücke (=~ und !~)
● „in“-Operator (Prüfung gegen eine Liste von Werten)
case $operatingsystem {
centos, redhat, fedora:
{ $nameserver = "named" }
debian: { $nameserver = "bind9" }
default: { fail("Unknown OS") }
}
$nameserver = $operatingsystem ? {
centos => 'named',
redhat => 'named',
fedora => 'named',
debian => 'bind9',
default => undef,
}
● Mehrfach-Entscheidung per „case“ ● Selektoren (ähnlich ternären
Operatoren aus anderen Sprachen)
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 15 / 33© SpeedPartner GmbH
Manifests und Ressourcen
Pfade:
● Bis hier nur Manifest-Dateien im aktuellen Pfad bzw. mit absoluter Adressierung verwendet
● Empfehlung: Angaben relativ zum puppet Modul-Pfad
● System-unabhängig
● Transparent für spätere Verwendung von puppet im Client-/Server-Modus
● Ermittlung Pfad für Manifests:
Alternativ: z.B. gesamte Konfiguration über Schlüsselwort „all“ ermitteln
● Umstellung Adressierung auf relative Angaben, z.B. für Template-Dateien
# puppet apply --configprint manifestdir
source => 'puppet:///files/etc/my.cnf'
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 16 / 33© SpeedPartner GmbH
Manifests und Ressourcen
Klassen:
● Zusammenfassung wiederverwendbarer Definitionen
● Definierte Klassen dann noch als Ressourcen einbinden
● Einbindung per „class“ oder „include“
● Übergabe von Parametern bei Verwendung von „class“-Notation möglich
● Autoloader: Klassen (und Module) werden automatisch geladen
● Konvention: Verzeichnis „classes“, Dateiname „klassenname.pp“
# Klasse definieren
class db {
# Definitionen innerhalb Klasse wie gewohnt
}
# Klasse einbinden
class { 'db': }
# Alternativ per include
include db
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 17 / 33© SpeedPartner GmbH
Manifests und Ressourcen
Klassen und Variablen:
● Variablen innerhalb Klasse bilden separaten Geltungsbereich („Scope“)
● Falls Variable nicht im aktuellen „Scope“ auffindbar Rückgriff auf übergeordnete Ebene
● Klassenvariablen von außerhalb per voll qualifiziertem Namen erreichbar,
Notation mit zwei Doppelpunkten, z.B. $db::variable
● Aus Klasse expliziter Zugriff auf globale Variablen möglich,
die z.B. per facter bereitgestellt werden: $::operatingsystem
Parametrisierte Klassen:
● Erlaubt Übergabe von Werten
# Definition
class db ($dbname, $servername = 'localhost') {
...
}
# Einbindung als Ressource
class {'db':
$dbname => 'demodb',
}
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 18 / 33© SpeedPartner GmbH
Manifests und Ressourcen
Definition von Typen:
● Problem: Je Ressource nur eine eindeutige Definition möglich.
Wie einfache „Mehrfach-Nutzung“?
● Lösung: Eindeutige Definitionen verwenden.
Arbeitserleichterung durch Verwendung von Typen.
● Ansatz: Ressourcen benötigen pro Ressourcen-Typ eindeutigen Titel
define sshkeys ($user = $title, $content) {
file {"${user}/keys":
path => "/home/${user}/.ssh/authorized_keys",
ensure => file,
content => $content,
mode => 0644,
owner => $user,
require => User[$user],
}
}
# Verwendung
sshkeys { 'joeuser': content => '...' }
beliebiger, eindeutiger Titel
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 19 / 33© SpeedPartner GmbH
Manifests und Ressourcen
Module:
● Fassen Code und Daten zusammen
● Leichte Wiederverwendbarkeit
● Modul-Sammlung z.B. bei „Puppet Forge“ (siehe Hersteller-Website) verfügbar
● Automatische Initialisierung innerhalb Moduls durch init-Manifest
● Einheitliche Struktur:
{module}/
files/
lib/
manifests/
init.pp
{class}.pp
{namespace}/
{class}.pp
templates/
tests/
automatisch geladen,
ermöglicht weitere Initialisierungen
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 20 / 33© SpeedPartner GmbH
Manifests und Ressourcen
Templates:
● Ermöglicht Dateiinhalte mit (teilweise) dynamischen Inhalten
● Verwendung von ERB-Notation (Implementierung von „embedded ruby“, auch eRuby genannt)
● Code innerhalb spitzer Klammern mit Prozentzeichen
● Kurzschreibweise zur Ausgabe von Variablen / Ausdrücken: Gleichheitszeichen am Anfang
● Schleife zur Ausgabe über ein Array
● Definition Werte in Manifest:
● Ausgabe im Template:
<% ...ruby-Code... %>
<%= hostname %>
$servernamen = ['server1', 'server2', 'server3', ]
<% serversnamen.each do |srv| -%>
<%= srv %>
<% end -%>
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 21 / 33© SpeedPartner GmbH
Augeas
Konfigurationsdateien bearbeiten:
● Einheitliche, hierarchische Sicht auf verschiedene Konfigurationsformate
● Unterstützung von Dateien/Formaten über passende „Linsen“ („lenses“)
● Zugriff / Änderung von relevanter Teile einfach, Rest bleibt unberührt
# augtool
augtool> print /files/etc/php.ini
[...]
/files/etc/php.ini/PHP/expose_php = "On"
/files/etc/php.ini/PHP/max_execution_time = "30"
/files/etc/php.ini/PHP/max_input_time = "60"
/files/etc/php.ini/PHP/max_input_vars = "1000"
/files/etc/php.ini/PHP/memory_limit = "128M"
/files/etc/php.ini/PHP/error_reporting = "E_ALL & ~E_DEPRECATED"
/files/etc/php.ini/PHP/display_errors = "Off"
/files/etc/php.ini/PHP/display_startup_errors = "Off"
/files/etc/php.ini/PHP/log_errors = "On"
/files/etc/php.ini/PHP/log_errors_max_len = "1024"
/files/etc/php.ini/mail function
/files/etc/php.ini/mail function/SMTP = "localhost"
/files/etc/php.ini/mail function/smtp_port = "25"
/files/etc/php.ini/mail function/sendmail_path = "/usr/sbin/sendmail -t -i"
augtool> set /files/etc/php.ini/PHP/expose_php Off
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 22 / 33© SpeedPartner GmbH
Augeas
Konfigurationsdateien bearbeiten:
● Integration von augeas in puppet verfügbar
class php {
package { ['php','php-mysql','php-gd','php-pdo'] :
ensure => installed,
}
augeas { "/etc/php.ini":
context => "/files/etc/php.ini",
changes => [
"set PHP/expose_php off",
"set mail function/mail.add_x_header off",
"set Date/date.timezone Europe/Berlin",
"set PHP/display_errors on",
"set PHP/error_reporting E_ALL & ~E_NOTICE",
"set PHP/memory_limit 128M",
"set PHP/post_max_size 64M",
"set PHP/upload_max_filesize 64M",
"set PHP/max_execution_time 180",
"set Session/session.save_path /tmp",
],
notify => [ Service['httpd'] ],
}
}
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 23 / 33© SpeedPartner GmbH
Facter für Fortgeschrittene
Fakten schaffen:
● Erweiterung der facter-Funktionalität über eigene Module möglich
● Werte stehen in puppet in Variablen zur Verfügung
● Beispielskript zur (simplen) Ermittlung aller Laufwerke unterhalb eigenen Modulpfads ablegen,
etwa modules/mymodules/lib/facter/harddrives.rb
Facter.add(:harddrives) do
setcode do
Facter::Util::Resolution.exec("ls /dev/sd? /dev/hd? 2>/dev/null | tr -s 'n' ','")
end
end
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 24 / 33© SpeedPartner GmbH
Facter für Fortgeschrittene
Fakten schaffen:
● Beispielskript zur Erkennung Hard-/Software-RAID
Facter.add("raidtype") do
confine :kernel => :linux
ENV["PATH"]="/bin:/sbin:/usr/bin:/usr/sbin"
setcode do
raidtype = []
if FileTest.exists?("/proc/mdstat")
txt = File.read("/proc/mdstat")
raidtype.push("software ") if txt =~ /^md/i
End
lspciexists = system "/bin/bash -c 'which lspci >&/dev/null'"
if $?.exitstatus == 0
output = %x{lspci}
output.each { |s|
raidtype.push("hardware ") if s =~ /RAID/i
}
end
raidtype
end
end
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 25 / 33© SpeedPartner GmbH
Puppet im Client/Server-Einsatz
Vorteile:
● Zentrale Verwaltung von Definitionen und Regeln
● Zentrale Ablage der „Fakten“ für alle Systeme
● Bildung von Gruppen möglich
(alle Webserver, alle Server mit bestimmtem Hostnamen-Schema, ...)
Konfiguration Server:
● Installation Server-Paket „puppet“, inkl. facter und (optional) augeas
● CentOS, RedHat, Fedora: Paket „puppet-server“, bei Debian „puppetmaster“
● Laden aller Definitionen für Nodes und Klassen,
z.B. über Einträge in /etc/puppet/manifests/site.pp vornehmen
● Je Node eine Datei im nodes-Verzeichnis anlegen
für Definition von Ressourcen, Verwendung von Klassen, ...
import "nodes/*.pp"
import "classes/*.pp"
node "testclient.example.com" {
include basenode
}
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 26 / 33© SpeedPartner GmbH
Puppet im Client/Server-Einsatz
Konfiguration Server:
● Klassen können dann beispielsweise weitere Klassen includen oder Ressourcen definieren
● Ablegen aller weiteren benötigten Dateien auf dem Server (files, templates, ...)
● Verwendung von puppet:// URLs für Zugriff auf Dateien vom Server
● puppetmaster-Daemon starten :-)
class basenode {
if ($mta == '')
{
$mta = 'postfix'
}
include basepackages, crond, puppet, sshd, logrotate, logwatch, collectd, mailalias, nrpe
if ($is_virtual == "false")
{
include ntp
include lm_sensors
include dns_resolver
}
}
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 27 / 33© SpeedPartner GmbH
Puppet im Client/Server-Einsatz
Client-Server-Verbindung:
● Puppet auf Client installieren, ggf. Server-Einstellung anpassen (/etc/puppet/puppet.conf)
● Standard-Servername ist „puppetmaster“
● Betrieb Client als Daemon möglich (Standardmäßig Ausführung alle 30min.)
oder händischer Start (Parameter --test beim Aufruf)
● Erster Verbindungsaufbau erzeugt einen Zertifikatsrequest
● Praxistipp: Client kann auf Akzeptieren des Zertifikat warten
● Zertifikatsanfragen am Server prüfen und signieren
● Prüfen welche Änderungen auf dem Client durchgeführt würden (Trockenübung)
[agent]
server = puppetsrv.example.com
# puppetd --waitforcert 60 --test
# puppetca --list
# puppetca --sign <Clientname> oder
# puppetca --sign –all Aufpassen was signiert wird!
# puppetd --test ---noop
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 28 / 33© SpeedPartner GmbH
Environments
Arbeit mit mehreren Umgebungen:
● Trennung in z.B. „dev“ und „production“
● Angabe des Environment für einen Node auf Server oder Client
● Client-seitige Wahl des Environment empfohlen
● Standard-Environment: „production“
● Konfiguration des Environment auf dem Server (puppet.conf):
● Standard-Einstellungen aus [master] für unbekanntes Environment
● Konfiguration des Environment auf dem Client (puppet.conf):
[master]
manifest = $confdir/manifests/site.pp
[production]
manifest = $confdir/env/prod/manifests/site.pp
[dev]
manifest = $confdir/env/$environment/manifests/site.pp
[agent]
environment = dev
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 29 / 33© SpeedPartner GmbH
Externe Anbindungen
Vielfältige Möglichkeiten zur Integration:
● Generierung Node-Konfiguration über „external node classifier“ (ENC)
● Externes Programm erhält Node-Namen,
liefert YAML-Dokument zurück
● z.B. Abfrage gegen beliebige Datenbanken
---
classes:
dyn:
ports:
- 25
- 587
smtpmx: gw.mens.de
users:
alex:
home: /nfs/alex
uid: 502
jane:
home: /home/jane
uid: 201
ssh: ''
parameters:
location: Chicago
manager: Jane Doe
my_memory: 216
nodename: cp09.mens.deGrafik / Beispiel von Jan-Piet Mens, jpmens.net
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 30 / 33© SpeedPartner GmbH
Externe Anbindungen
Vielfältige Möglichkeiten zur Integration:
● Von facter gesammelte „Fakten“ für Generierung von Konfigurationen nutzen
● Pro Node ermittelt
● Daten zentral auf dem puppet-master verfügbar
(/var/lib/puppet/yaml/facts)
● Monitoring-Konfiguration
● Welche Hosts
● Welche Dienste / Ports
● Backup-Konfiguration
● Automatische Einrichtung auf Backuptarget
● Backup-Rollover, ...
● SSHFP-Records generieren / publizieren
● „ssh“-Fact sammelt bereits RSA/DSA-Keys
● Hieraus SSHFP-Records generieren und ins DNS bringen
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 31 / 33© SpeedPartner GmbH
Fazit
● Definition und Umsetzung klarer Regeln
● Leichte Administration einer größeren Anzahl Maschinen / Umgebungen
● Flexible Konfigurationsmöglichkeiten
● Nutzung lokal oder im Client-Server-Betrieb
● Zentrale Sammlung aller „Fakten“ auf Server
● Ermöglicht weitere Verarbeitung für z.B. Monitoring-Konfiguration
● Leichter Einstieg für einzelne Teilaspekte einer Konfiguration möglich
● Ausbaufähig zu umfangreichen Regelwerken
● Aufwand für Definition aller Abhängigkeiten und Sonderfälle nicht unterschätzen!
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 32 / 33© SpeedPartner GmbH
Links / Hilfen
● Cheatsheet für alle Kern-Ressourcetypen und ihre Attribute:
http://docs.puppetlabs.com/puppet_core_types_cheatsheet.pdf
● „Puppet Forge“ (Sammlung fertiger Module):
http://forge.puppetlabs.com/
● External Node Classifiers (ENC):
http://jpmens.net/2011/07/25/external-node-classification-and-data-in-puppet/
● Generieren von Konfigurationen aus „facts“, z.B. SSHFP-Record-Einträge
https://github.com/jpmens/facts2sshfp
http://jpmens.net/2012/02/01/on-collecting-ssh-host-keys-for-sshfp-dns-records/
Verwaltung mit facter, puppet und augeas
GUUG-Treffen in Hamburg, 13.09.2012
Seite: 33 / 33© SpeedPartner GmbH
Kontakt
Danke fürs Zuhören
sowie
viel Erfolg und Spaß
mit puppet & Co.!
Link zu den Slides: http://talks.speedpartner.de/
Bei Fragen stehen wir selbstverständlich gerne zur Verfügung:
Stefan Neufeind, neufeind@speedpartner.de
SpeedPartner GmbH, http://www.speedpartner.de/

Weitere ähnliche Inhalte

Andere mochten auch (14)

Technology road map
Technology road mapTechnology road map
Technology road map
 
Bewusstsein (German)
Bewusstsein (German)Bewusstsein (German)
Bewusstsein (German)
 
Apple
AppleApple
Apple
 
New microsoft power point presentation
New microsoft power point presentationNew microsoft power point presentation
New microsoft power point presentation
 
Las profesiones 6 sınıf
Las profesiones 6 sınıfLas profesiones 6 sınıf
Las profesiones 6 sınıf
 
El caso de dragon mart
El caso de dragon martEl caso de dragon mart
El caso de dragon mart
 
Los oficios 2º
Los oficios  2ºLos oficios  2º
Los oficios 2º
 
Sociedad colonial
Sociedad colonial Sociedad colonial
Sociedad colonial
 
Sistemas y técnicas de fabricación
Sistemas y técnicas de fabricaciónSistemas y técnicas de fabricación
Sistemas y técnicas de fabricación
 
Planificación semana 2 noviembre
Planificación semana 2 noviembrePlanificación semana 2 noviembre
Planificación semana 2 noviembre
 
Procesos de tostación
Procesos de tostaciónProcesos de tostación
Procesos de tostación
 
ursuletul Knut
ursuletul Knutursuletul Knut
ursuletul Knut
 
Cuentos Morgau
Cuentos Morgau Cuentos Morgau
Cuentos Morgau
 
Banner4_PRINT
Banner4_PRINTBanner4_PRINT
Banner4_PRINT
 

Ähnlich wie System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas

Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)NETWAYS
 
AdminCamp 2011 Performance
AdminCamp 2011 PerformanceAdminCamp 2011 Performance
AdminCamp 2011 PerformanceUlrich Krause
 
Linux-Server mit Open-Source-Tools automatisieren
Linux-Server mit Open-Source-Tools automatisierenLinux-Server mit Open-Source-Tools automatisieren
Linux-Server mit Open-Source-Tools automatisierenChristian Kauhaus
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Managementinovex GmbH
 
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur UmsetzungPuppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur Umsetzunginovex GmbH
 
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenDBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenGunther Pippèrr
 
Extbase/Fluid: Kennenlernen und ausprobieren
Extbase/Fluid: Kennenlernen und ausprobierenExtbase/Fluid: Kennenlernen und ausprobieren
Extbase/Fluid: Kennenlernen und ausprobierenSpeedPartner GmbH
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex GmbH
 
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaOracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaPeter Ramm
 
Drupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurtdasjo
 
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenOpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenB1 Systems GmbH
 
High performance mit PHP
High performance mit PHPHigh performance mit PHP
High performance mit PHPThomas Burgard
 
Über Rechte/Rollen und den sicheren Betrieb der Datenbank
Über Rechte/Rollen und den sicheren Betrieb der DatenbankÜber Rechte/Rollen und den sicheren Betrieb der Datenbank
Über Rechte/Rollen und den sicheren Betrieb der DatenbankGunther Pippèrr
 
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael StrebNagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael StrebNETWAYS
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Jürg Stuker
 
Real Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
Real Application Testing - DOAG SIG Database 2010 - Simon DickmeißReal Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
Real Application Testing - DOAG SIG Database 2010 - Simon DickmeißOPITZ CONSULTING Deutschland
 
Domino 9 - jetzt mit integrierten Features, die das Admin-Leben leichter machen
Domino 9 - jetzt mit integrierten Features, die das Admin-Leben leichter machenDomino 9 - jetzt mit integrierten Features, die das Admin-Leben leichter machen
Domino 9 - jetzt mit integrierten Features, die das Admin-Leben leichter machenAndreas Ponte
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGTorsten Kleiber
 
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)Novakenstein
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishSpeedPartner GmbH
 

Ähnlich wie System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas (20)

Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
 
AdminCamp 2011 Performance
AdminCamp 2011 PerformanceAdminCamp 2011 Performance
AdminCamp 2011 Performance
 
Linux-Server mit Open-Source-Tools automatisieren
Linux-Server mit Open-Source-Tools automatisierenLinux-Server mit Open-Source-Tools automatisieren
Linux-Server mit Open-Source-Tools automatisieren
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Management
 
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur UmsetzungPuppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
 
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenDBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
 
Extbase/Fluid: Kennenlernen und ausprobieren
Extbase/Fluid: Kennenlernen und ausprobierenExtbase/Fluid: Kennenlernen und ausprobieren
Extbase/Fluid: Kennenlernen und ausprobieren
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaOracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
 
Drupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurt
 
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenOpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
 
High performance mit PHP
High performance mit PHPHigh performance mit PHP
High performance mit PHP
 
Über Rechte/Rollen und den sicheren Betrieb der Datenbank
Über Rechte/Rollen und den sicheren Betrieb der DatenbankÜber Rechte/Rollen und den sicheren Betrieb der Datenbank
Über Rechte/Rollen und den sicheren Betrieb der Datenbank
 
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael StrebNagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003
 
Real Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
Real Application Testing - DOAG SIG Database 2010 - Simon DickmeißReal Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
Real Application Testing - DOAG SIG Database 2010 - Simon Dickmeiß
 
Domino 9 - jetzt mit integrierten Features, die das Admin-Leben leichter machen
Domino 9 - jetzt mit integrierten Features, die das Admin-Leben leichter machenDomino 9 - jetzt mit integrierten Features, die das Admin-Leben leichter machen
Domino 9 - jetzt mit integrierten Features, die das Admin-Leben leichter machen
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
 
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnish
 

Mehr von SpeedPartner GmbH

Professional reports with SVG
Professional reports with SVGProfessional reports with SVG
Professional reports with SVGSpeedPartner GmbH
 
XUL - The future of user-interfaces on the web
XUL - The future of user-interfaces on the webXUL - The future of user-interfaces on the web
XUL - The future of user-interfaces on the webSpeedPartner GmbH
 
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenWebsockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenSpeedPartner GmbH
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishSpeedPartner GmbH
 
.EU – eine neue Top-Level-Domain
.EU – eine neue Top-Level-Domain.EU – eine neue Top-Level-Domain
.EU – eine neue Top-Level-DomainSpeedPartner GmbH
 
Leben und Arbeiten in einer Community
Leben und Arbeiten in einer CommunityLeben und Arbeiten in einer Community
Leben und Arbeiten in einer CommunitySpeedPartner GmbH
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSpeedPartner GmbH
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSpeedPartner GmbH
 
Deploying IPv6 - planning, common pitfalls and security-considerations
Deploying IPv6 - planning, common pitfalls and security-considerationsDeploying IPv6 - planning, common pitfalls and security-considerations
Deploying IPv6 - planning, common pitfalls and security-considerationsSpeedPartner GmbH
 
Explanation of the TYPO3 Integrator Certification
Explanation of the TYPO3 Integrator CertificationExplanation of the TYPO3 Integrator Certification
Explanation of the TYPO3 Integrator CertificationSpeedPartner GmbH
 

Mehr von SpeedPartner GmbH (16)

Professional reports with SVG
Professional reports with SVGProfessional reports with SVG
Professional reports with SVG
 
Secure PHP environment
Secure PHP environmentSecure PHP environment
Secure PHP environment
 
XUL - The future of user-interfaces on the web
XUL - The future of user-interfaces on the webXUL - The future of user-interfaces on the web
XUL - The future of user-interfaces on the web
 
PHP-Applikationen mit PEAR
PHP-Applikationen mit PEARPHP-Applikationen mit PEAR
PHP-Applikationen mit PEAR
 
PHP-Entwicklung mit PEAR
PHP-Entwicklung mit PEARPHP-Entwicklung mit PEAR
PHP-Entwicklung mit PEAR
 
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenWebsockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnish
 
News from PEAR
News from PEARNews from PEAR
News from PEAR
 
PEAR - An introduction
PEAR - An introductionPEAR - An introduction
PEAR - An introduction
 
Suchmaschinen-Optimierung
Suchmaschinen-OptimierungSuchmaschinen-Optimierung
Suchmaschinen-Optimierung
 
.EU – eine neue Top-Level-Domain
.EU – eine neue Top-Level-Domain.EU – eine neue Top-Level-Domain
.EU – eine neue Top-Level-Domain
 
Leben und Arbeiten in einer Community
Leben und Arbeiten in einer CommunityLeben und Arbeiten in einer Community
Leben und Arbeiten in einer Community
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
 
Deploying IPv6 - planning, common pitfalls and security-considerations
Deploying IPv6 - planning, common pitfalls and security-considerationsDeploying IPv6 - planning, common pitfalls and security-considerations
Deploying IPv6 - planning, common pitfalls and security-considerations
 
Explanation of the TYPO3 Integrator Certification
Explanation of the TYPO3 Integrator CertificationExplanation of the TYPO3 Integrator Certification
Explanation of the TYPO3 Integrator Certification
 

System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas

  • 1. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 1 / 33© SpeedPartner GmbH System-Management-Trio Zentrale Verwaltung mit facter, puppet und augeas
  • 2. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 2 / 33© SpeedPartner GmbH Über den Vortrag Aufbau / Ziele: ● Einführung / Überblick ● Begriffsklärung ● Aufbau / Arbeitsweise von Manifests ● Templates, Klassen, Typen, Module ● Facter: Umgebungsparameter ermitteln ● Augeas: Konfigurationen bearbeiten ● Client-Server-Betrieb ● Arbeit mit mehreren Umgebungen ● Links / Hilfen
  • 3. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 3 / 33© SpeedPartner GmbH Über mich ● Stefan Neufeind ● Mit-Geschäftsführer der SpeedPartner GmbH aus Neuss ein Internet-Service-Provider (ISP) ● Individuelle TYPO3-Entwicklungen ● Hosting, Housing, Managed Services ● Domains / Domain-Services ● IPv6, DNSSEC, ... ● Aktive Mitarbeit im Community-Umfeld (PHP/PEAR, TYPO3, Linux) ● Freier Autor für z.B. t3n, iX, Internet World, ...
  • 4. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 4 / 33© SpeedPartner GmbH Aufgabenstellung Alltägliche Administrationsaufgaben für ein (Server-)System Basisinstallation Einrichtung / Konfiguration Individuelle Anpassungen Fehlersuche / Fehlerkorrektur Zugänge Netzwerk Backup Systemstatistiken Monitoring Virtuell? Architektur RAID?Aufgaben Fehler bei Ausführung von „Standard-Aufgaben“? Fehler durch die „Sonderlösungen“? Konzeptfehler?
  • 5. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 5 / 33© SpeedPartner GmbH Aufgabenstellung Herausforderungen bei Administration mehrerer Systeme ● Einsparungen (Zeit und Kosten) ● Minimierung von Fehlern ● Einheitliche Konfiguration ● Einfache Anpassbarkeit ● Zentral? ● Automatisiert? Umsetzung erfordert: ● Klare Regeln / Entscheidungsgrundlagen ● Abgleich Vorgaben und Realität ● Strukturierte Herangehensweise ● Unterstützung durch geeignete Hilfsmittel
  • 6. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 6 / 33© SpeedPartner GmbH Vorstellung System-Management-Trio Das „System-Management-Trio“ bestehend aus: ● Puppet ● Facter ● Augeas ● Zentrale Komponente ● Definiert Regeln, Abhängigkeiten, Aktionen, ... ● Vorgaben basierend auf Fakten ● Abgleich Planung / Vorgaben und Realität ● Liefert „Fakten“ für Puppet ● Ermittelt Umgebungsparameter ● Bereitstellung in einheitlicher Form ● Anpassung von Konfigurationen ● Abstraktion für Zugriff auf Konfigurationseinstellungen
  • 7. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 7 / 33© SpeedPartner GmbH Vorstellung System-Management-Trio Zentrale Begriffe im puppet-Umfeld: ● Manifests: ● „Verzeichnis“ von Objekten, Eigenschaften und Beziehungen ● Dateiendung: .pp ● Ressourcen: ● Definition über den „Ressource abstraction layer“ (RAL) ● Beziehen sich auf Entsprechungen im System ● Unabhängig z.B. vom verwendeten Paketmanager ● Zentrale Ressourcentypen: Dateien, Pakete, Dienste, Benutzer/Gruppen ● Bestehend aus einem „Titel“ und „Attributen“ ● Jede Ressource eindeutig ● Modellierung von Abhängigkeiten, Reihenfolge der Definition beliebig ● Puppet auto-generiert sinnvolle Reihenfolgen (z.B. erst Verzeichnisse anlegen, dann darin enthaltene Dateien) ● Knoten („nodes“): ● Sammlung von Ressourcen
  • 8. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 8 / 33© SpeedPartner GmbH Vorstellung System-Management-Trio Zentrale Begriffe im puppet-Umfeld: ● Templates: ● Vorlagen für Ressourcentyp Datei („file“) ● Ausgabe auf Basis von Variablen (Fakten), Kontrollstrukturen und umgebeneder Notation ● Notation mit Hilfe von ERB (eine Implementierung von „embedded ruby“, auch eRuby genannt) ● Module: ● Sammlung von Code und Daten ● Einheitliche Verzeichnis-/Dateistruktur ● Wiederverwendbar ● Fertige Module für verschiedene Einsatzzwecke verfügbar (siehe z.B. auf „Puppet Forge“)
  • 9. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 9 / 33© SpeedPartner GmbH Manifests und Ressourcen Notation in „Manifests“: ● Puppet-eigene Syntax ● Zeichenketten in einfachen Hochkommata ('...') oder Anführungszeichen (“...”) ● Hochkommata: keine weitere Verarbeitung der Inhalte ● Anführungszeichen: Ersetzung von z.B. Zeilenumbrüche (“n”), Variablen (“${fileame}”) oder Platzhaltern (wie z.B. $0, $1, ... bei der Verwendung von regulären Ausdrücken) ● Listen von Werten (Arrays): in eckigen Klammern, Werte mittels Kommas getrennt file { '/etc/my.cnf': ensure => file, mode => 600, source => '/home/demo/my.cnf', } Ressourcen-Typ gefolgt von Block in geschweifte Klammern Block mit eindeutigem Titel (je Ressourcen-Typ) gefolgt von Doppelpunkt Definierte Werte / Zahlen ohne Klammerung Notation mit key => value Attribute mit Komma getrennt
  • 10. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 10 / 33© SpeedPartner GmbH Manifests und Ressourcen Arbeitsweise von „Manifests“: ● Definitionen von Eigenschaften, keine sequentielle „Abarbeitung“ / Reihenfolge ● Keine Löschung / Überschreibung von einmal definierten Ressourcen oder zugewiesene Variablen ● Compiler löst vor Anwendung der Definitionen etwaige Bedingungen auf ● Notwendige Reihenfolge (Abhängigkeiten) von Ressourcen bei Definition von Ressourcen angeben Beispiel: Installation eines Pakets Anpassung Konfigurationsdateien Starten zugehöriger Dienste
  • 11. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 11 / 33© SpeedPartner GmbH Manifests und Ressourcen Abhängigkeiten zwischen Ressourcen: ● Definitionen über Meta-Parameter innerhalb Ressourcen-Definitionen ● 'before': diese Ressource vor der angegebenen berücksichtigen ● 'require': diese Ressource nach der angegebenen berücksichtigen ● 'notify': ein/mehrere andere Ressourcen benachrichtigen (sofern Änderungen durchgeführt wurden) ● 'subscribe': auf Änderungen einer anderen Ressource reagieren ● Explizite Definition (separate Zeile in Manifest) ● Angabe einer Reihenfolge (Pfeil mit Bindestrich) ● Angabe einer Benachrichtigung (Pfeil mit Tilde) package { 'mysql-server': } -> file { '/etc/my.cnf': }
  • 12. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 12 / 33© SpeedPartner GmbH Manifests und Ressourcen Das erste Manifest: ● Notation in einer beliebigen Datei (hier: demo1.pp) ● Anwenden des Manifest auf das System package { 'mysql-server': ensure => present, } file { '/etc/my.cnf': ensure => file, mode => 600, source => '/home/demo/my.cnf', } service { 'mysqld': ensure => running, enable => true, hasrestart => true, hasstatus => true, subscribe => File['/etc/my.cnf'], require => Package['mysql-server'], } puppet apply demo1.pp Dienst soll (aktuell) gestartet sein Dienst soll automatisch starten Startskripte unterstützen „restart“ / „status“ Bei Änderungen an Datei restart Paket muss installiert sein
  • 13. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 13 / 33© SpeedPartner GmbH Facter Fakten und Entscheidungen: ● Testweise händischer Aufruf von „Facter“ für Übersicht Eigenschaften (Auszug) # facter architecture => x86_64 augeasversion => 0.10.0 domain => example.com facterversion => 1.6.6 fqdn => demohost.example.com hostname => demohost is_virtual => true virtual => kvm kernel => Linux kernelmajversion => 2.6 kernelrelease => 2.6.18-308.1.1.el5 kernelversion => 2.6.32 manufacturer => Red Hat operatingsystem => CentOS operatingsystemrelease => 5.8 osfamily => RedHat physicalprocessorcount => 4 processorcount => 4 uptime_hours => 136 uptime_seconds => 490098
  • 14. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 14 / 33© SpeedPartner GmbH Facter Fakten und Entscheidungen: ● Facter ermittelt Fakten über das System ● Facter-Module stellen Daten in Variablen zur Verfügung ● Fakten können für Entscheidungen innerhalb des Manifest genutzt werden ● Standardoperationen (==, !=, <, >, <=, >=) ● Reguläre Ausdrücke (=~ und !~) ● „in“-Operator (Prüfung gegen eine Liste von Werten) case $operatingsystem { centos, redhat, fedora: { $nameserver = "named" } debian: { $nameserver = "bind9" } default: { fail("Unknown OS") } } $nameserver = $operatingsystem ? { centos => 'named', redhat => 'named', fedora => 'named', debian => 'bind9', default => undef, } ● Mehrfach-Entscheidung per „case“ ● Selektoren (ähnlich ternären Operatoren aus anderen Sprachen)
  • 15. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 15 / 33© SpeedPartner GmbH Manifests und Ressourcen Pfade: ● Bis hier nur Manifest-Dateien im aktuellen Pfad bzw. mit absoluter Adressierung verwendet ● Empfehlung: Angaben relativ zum puppet Modul-Pfad ● System-unabhängig ● Transparent für spätere Verwendung von puppet im Client-/Server-Modus ● Ermittlung Pfad für Manifests: Alternativ: z.B. gesamte Konfiguration über Schlüsselwort „all“ ermitteln ● Umstellung Adressierung auf relative Angaben, z.B. für Template-Dateien # puppet apply --configprint manifestdir source => 'puppet:///files/etc/my.cnf'
  • 16. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 16 / 33© SpeedPartner GmbH Manifests und Ressourcen Klassen: ● Zusammenfassung wiederverwendbarer Definitionen ● Definierte Klassen dann noch als Ressourcen einbinden ● Einbindung per „class“ oder „include“ ● Übergabe von Parametern bei Verwendung von „class“-Notation möglich ● Autoloader: Klassen (und Module) werden automatisch geladen ● Konvention: Verzeichnis „classes“, Dateiname „klassenname.pp“ # Klasse definieren class db { # Definitionen innerhalb Klasse wie gewohnt } # Klasse einbinden class { 'db': } # Alternativ per include include db
  • 17. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 17 / 33© SpeedPartner GmbH Manifests und Ressourcen Klassen und Variablen: ● Variablen innerhalb Klasse bilden separaten Geltungsbereich („Scope“) ● Falls Variable nicht im aktuellen „Scope“ auffindbar Rückgriff auf übergeordnete Ebene ● Klassenvariablen von außerhalb per voll qualifiziertem Namen erreichbar, Notation mit zwei Doppelpunkten, z.B. $db::variable ● Aus Klasse expliziter Zugriff auf globale Variablen möglich, die z.B. per facter bereitgestellt werden: $::operatingsystem Parametrisierte Klassen: ● Erlaubt Übergabe von Werten # Definition class db ($dbname, $servername = 'localhost') { ... } # Einbindung als Ressource class {'db': $dbname => 'demodb', }
  • 18. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 18 / 33© SpeedPartner GmbH Manifests und Ressourcen Definition von Typen: ● Problem: Je Ressource nur eine eindeutige Definition möglich. Wie einfache „Mehrfach-Nutzung“? ● Lösung: Eindeutige Definitionen verwenden. Arbeitserleichterung durch Verwendung von Typen. ● Ansatz: Ressourcen benötigen pro Ressourcen-Typ eindeutigen Titel define sshkeys ($user = $title, $content) { file {"${user}/keys": path => "/home/${user}/.ssh/authorized_keys", ensure => file, content => $content, mode => 0644, owner => $user, require => User[$user], } } # Verwendung sshkeys { 'joeuser': content => '...' } beliebiger, eindeutiger Titel
  • 19. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 19 / 33© SpeedPartner GmbH Manifests und Ressourcen Module: ● Fassen Code und Daten zusammen ● Leichte Wiederverwendbarkeit ● Modul-Sammlung z.B. bei „Puppet Forge“ (siehe Hersteller-Website) verfügbar ● Automatische Initialisierung innerhalb Moduls durch init-Manifest ● Einheitliche Struktur: {module}/ files/ lib/ manifests/ init.pp {class}.pp {namespace}/ {class}.pp templates/ tests/ automatisch geladen, ermöglicht weitere Initialisierungen
  • 20. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 20 / 33© SpeedPartner GmbH Manifests und Ressourcen Templates: ● Ermöglicht Dateiinhalte mit (teilweise) dynamischen Inhalten ● Verwendung von ERB-Notation (Implementierung von „embedded ruby“, auch eRuby genannt) ● Code innerhalb spitzer Klammern mit Prozentzeichen ● Kurzschreibweise zur Ausgabe von Variablen / Ausdrücken: Gleichheitszeichen am Anfang ● Schleife zur Ausgabe über ein Array ● Definition Werte in Manifest: ● Ausgabe im Template: <% ...ruby-Code... %> <%= hostname %> $servernamen = ['server1', 'server2', 'server3', ] <% serversnamen.each do |srv| -%> <%= srv %> <% end -%>
  • 21. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 21 / 33© SpeedPartner GmbH Augeas Konfigurationsdateien bearbeiten: ● Einheitliche, hierarchische Sicht auf verschiedene Konfigurationsformate ● Unterstützung von Dateien/Formaten über passende „Linsen“ („lenses“) ● Zugriff / Änderung von relevanter Teile einfach, Rest bleibt unberührt # augtool augtool> print /files/etc/php.ini [...] /files/etc/php.ini/PHP/expose_php = "On" /files/etc/php.ini/PHP/max_execution_time = "30" /files/etc/php.ini/PHP/max_input_time = "60" /files/etc/php.ini/PHP/max_input_vars = "1000" /files/etc/php.ini/PHP/memory_limit = "128M" /files/etc/php.ini/PHP/error_reporting = "E_ALL & ~E_DEPRECATED" /files/etc/php.ini/PHP/display_errors = "Off" /files/etc/php.ini/PHP/display_startup_errors = "Off" /files/etc/php.ini/PHP/log_errors = "On" /files/etc/php.ini/PHP/log_errors_max_len = "1024" /files/etc/php.ini/mail function /files/etc/php.ini/mail function/SMTP = "localhost" /files/etc/php.ini/mail function/smtp_port = "25" /files/etc/php.ini/mail function/sendmail_path = "/usr/sbin/sendmail -t -i" augtool> set /files/etc/php.ini/PHP/expose_php Off
  • 22. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 22 / 33© SpeedPartner GmbH Augeas Konfigurationsdateien bearbeiten: ● Integration von augeas in puppet verfügbar class php { package { ['php','php-mysql','php-gd','php-pdo'] : ensure => installed, } augeas { "/etc/php.ini": context => "/files/etc/php.ini", changes => [ "set PHP/expose_php off", "set mail function/mail.add_x_header off", "set Date/date.timezone Europe/Berlin", "set PHP/display_errors on", "set PHP/error_reporting E_ALL & ~E_NOTICE", "set PHP/memory_limit 128M", "set PHP/post_max_size 64M", "set PHP/upload_max_filesize 64M", "set PHP/max_execution_time 180", "set Session/session.save_path /tmp", ], notify => [ Service['httpd'] ], } }
  • 23. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 23 / 33© SpeedPartner GmbH Facter für Fortgeschrittene Fakten schaffen: ● Erweiterung der facter-Funktionalität über eigene Module möglich ● Werte stehen in puppet in Variablen zur Verfügung ● Beispielskript zur (simplen) Ermittlung aller Laufwerke unterhalb eigenen Modulpfads ablegen, etwa modules/mymodules/lib/facter/harddrives.rb Facter.add(:harddrives) do setcode do Facter::Util::Resolution.exec("ls /dev/sd? /dev/hd? 2>/dev/null | tr -s 'n' ','") end end
  • 24. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 24 / 33© SpeedPartner GmbH Facter für Fortgeschrittene Fakten schaffen: ● Beispielskript zur Erkennung Hard-/Software-RAID Facter.add("raidtype") do confine :kernel => :linux ENV["PATH"]="/bin:/sbin:/usr/bin:/usr/sbin" setcode do raidtype = [] if FileTest.exists?("/proc/mdstat") txt = File.read("/proc/mdstat") raidtype.push("software ") if txt =~ /^md/i End lspciexists = system "/bin/bash -c 'which lspci >&/dev/null'" if $?.exitstatus == 0 output = %x{lspci} output.each { |s| raidtype.push("hardware ") if s =~ /RAID/i } end raidtype end end
  • 25. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 25 / 33© SpeedPartner GmbH Puppet im Client/Server-Einsatz Vorteile: ● Zentrale Verwaltung von Definitionen und Regeln ● Zentrale Ablage der „Fakten“ für alle Systeme ● Bildung von Gruppen möglich (alle Webserver, alle Server mit bestimmtem Hostnamen-Schema, ...) Konfiguration Server: ● Installation Server-Paket „puppet“, inkl. facter und (optional) augeas ● CentOS, RedHat, Fedora: Paket „puppet-server“, bei Debian „puppetmaster“ ● Laden aller Definitionen für Nodes und Klassen, z.B. über Einträge in /etc/puppet/manifests/site.pp vornehmen ● Je Node eine Datei im nodes-Verzeichnis anlegen für Definition von Ressourcen, Verwendung von Klassen, ... import "nodes/*.pp" import "classes/*.pp" node "testclient.example.com" { include basenode }
  • 26. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 26 / 33© SpeedPartner GmbH Puppet im Client/Server-Einsatz Konfiguration Server: ● Klassen können dann beispielsweise weitere Klassen includen oder Ressourcen definieren ● Ablegen aller weiteren benötigten Dateien auf dem Server (files, templates, ...) ● Verwendung von puppet:// URLs für Zugriff auf Dateien vom Server ● puppetmaster-Daemon starten :-) class basenode { if ($mta == '') { $mta = 'postfix' } include basepackages, crond, puppet, sshd, logrotate, logwatch, collectd, mailalias, nrpe if ($is_virtual == "false") { include ntp include lm_sensors include dns_resolver } }
  • 27. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 27 / 33© SpeedPartner GmbH Puppet im Client/Server-Einsatz Client-Server-Verbindung: ● Puppet auf Client installieren, ggf. Server-Einstellung anpassen (/etc/puppet/puppet.conf) ● Standard-Servername ist „puppetmaster“ ● Betrieb Client als Daemon möglich (Standardmäßig Ausführung alle 30min.) oder händischer Start (Parameter --test beim Aufruf) ● Erster Verbindungsaufbau erzeugt einen Zertifikatsrequest ● Praxistipp: Client kann auf Akzeptieren des Zertifikat warten ● Zertifikatsanfragen am Server prüfen und signieren ● Prüfen welche Änderungen auf dem Client durchgeführt würden (Trockenübung) [agent] server = puppetsrv.example.com # puppetd --waitforcert 60 --test # puppetca --list # puppetca --sign <Clientname> oder # puppetca --sign –all Aufpassen was signiert wird! # puppetd --test ---noop
  • 28. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 28 / 33© SpeedPartner GmbH Environments Arbeit mit mehreren Umgebungen: ● Trennung in z.B. „dev“ und „production“ ● Angabe des Environment für einen Node auf Server oder Client ● Client-seitige Wahl des Environment empfohlen ● Standard-Environment: „production“ ● Konfiguration des Environment auf dem Server (puppet.conf): ● Standard-Einstellungen aus [master] für unbekanntes Environment ● Konfiguration des Environment auf dem Client (puppet.conf): [master] manifest = $confdir/manifests/site.pp [production] manifest = $confdir/env/prod/manifests/site.pp [dev] manifest = $confdir/env/$environment/manifests/site.pp [agent] environment = dev
  • 29. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 29 / 33© SpeedPartner GmbH Externe Anbindungen Vielfältige Möglichkeiten zur Integration: ● Generierung Node-Konfiguration über „external node classifier“ (ENC) ● Externes Programm erhält Node-Namen, liefert YAML-Dokument zurück ● z.B. Abfrage gegen beliebige Datenbanken --- classes: dyn: ports: - 25 - 587 smtpmx: gw.mens.de users: alex: home: /nfs/alex uid: 502 jane: home: /home/jane uid: 201 ssh: '' parameters: location: Chicago manager: Jane Doe my_memory: 216 nodename: cp09.mens.deGrafik / Beispiel von Jan-Piet Mens, jpmens.net
  • 30. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 30 / 33© SpeedPartner GmbH Externe Anbindungen Vielfältige Möglichkeiten zur Integration: ● Von facter gesammelte „Fakten“ für Generierung von Konfigurationen nutzen ● Pro Node ermittelt ● Daten zentral auf dem puppet-master verfügbar (/var/lib/puppet/yaml/facts) ● Monitoring-Konfiguration ● Welche Hosts ● Welche Dienste / Ports ● Backup-Konfiguration ● Automatische Einrichtung auf Backuptarget ● Backup-Rollover, ... ● SSHFP-Records generieren / publizieren ● „ssh“-Fact sammelt bereits RSA/DSA-Keys ● Hieraus SSHFP-Records generieren und ins DNS bringen
  • 31. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 31 / 33© SpeedPartner GmbH Fazit ● Definition und Umsetzung klarer Regeln ● Leichte Administration einer größeren Anzahl Maschinen / Umgebungen ● Flexible Konfigurationsmöglichkeiten ● Nutzung lokal oder im Client-Server-Betrieb ● Zentrale Sammlung aller „Fakten“ auf Server ● Ermöglicht weitere Verarbeitung für z.B. Monitoring-Konfiguration ● Leichter Einstieg für einzelne Teilaspekte einer Konfiguration möglich ● Ausbaufähig zu umfangreichen Regelwerken ● Aufwand für Definition aller Abhängigkeiten und Sonderfälle nicht unterschätzen!
  • 32. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 32 / 33© SpeedPartner GmbH Links / Hilfen ● Cheatsheet für alle Kern-Ressourcetypen und ihre Attribute: http://docs.puppetlabs.com/puppet_core_types_cheatsheet.pdf ● „Puppet Forge“ (Sammlung fertiger Module): http://forge.puppetlabs.com/ ● External Node Classifiers (ENC): http://jpmens.net/2011/07/25/external-node-classification-and-data-in-puppet/ ● Generieren von Konfigurationen aus „facts“, z.B. SSHFP-Record-Einträge https://github.com/jpmens/facts2sshfp http://jpmens.net/2012/02/01/on-collecting-ssh-host-keys-for-sshfp-dns-records/
  • 33. Verwaltung mit facter, puppet und augeas GUUG-Treffen in Hamburg, 13.09.2012 Seite: 33 / 33© SpeedPartner GmbH Kontakt Danke fürs Zuhören sowie viel Erfolg und Spaß mit puppet & Co.! Link zu den Slides: http://talks.speedpartner.de/ Bei Fragen stehen wir selbstverständlich gerne zur Verfügung: Stefan Neufeind, neufeind@speedpartner.de SpeedPartner GmbH, http://www.speedpartner.de/