SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
Verwaltung mit facter, puppet und augeas
LinuxTag, 23.05.2012
Seite: 1 / 33© SpeedPartner GmbH
System-Management-Trio
Zentrale Verwaltung mit
facter, puppet und augeas
Verwaltung mit facter, puppet und augeas
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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.9.0
domain => example.com
facterversion => 1.6.5
fqdn => demohost.example.com
hostname => demohost
is_virtual => true
virtual => kvm
kernel => Linux
kernelmajversion => 2.6
kernelrelease => 2.6.32-220.4.2.el6.x86_64
kernelversion => 2.6.32
manufacturer => Red Hat
operatingsystem => CentOS
operatingsystemrelease => 6.2
osfamily => RedHat
physicalprocessorcount => 4
processorcount => 4
uptime_hours => 136
uptime_seconds => 490098
Verwaltung mit facter, puppet und augeas
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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
LinuxTag, 23.05.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

Labios rotos zoe. computacion
Labios rotos zoe. computacionLabios rotos zoe. computacion
Labios rotos zoe. computacionEduardo Sebastian
 
Seguridad en las_redes_sociales
Seguridad en las_redes_socialesSeguridad en las_redes_sociales
Seguridad en las_redes_socialesEdgar0622
 
El fenómeno comunicativo
El fenómeno comunicativoEl fenómeno comunicativo
El fenómeno comunicativoLucy Zepeda
 
PersoApp - Sichere und benutzerfreundliche Internet-Anwendungen
PersoApp - Sichere und benutzerfreundliche Internet-AnwendungenPersoApp - Sichere und benutzerfreundliche Internet-Anwendungen
PersoApp - Sichere und benutzerfreundliche Internet-AnwendungenSven Wohlgemuth
 
Hörgeschädigtenkunde
HörgeschädigtenkundeHörgeschädigtenkunde
Hörgeschädigtenkundearainywinter
 
Inscripcion de asignaturas UVD
Inscripcion de asignaturas UVDInscripcion de asignaturas UVD
Inscripcion de asignaturas UVDEdgar0622
 
¿Qué es Puertollano? #NocierreElcogas
¿Qué es Puertollano? #NocierreElcogas¿Qué es Puertollano? #NocierreElcogas
¿Qué es Puertollano? #NocierreElcogasPepe Sánchez Vigara
 
El ritual de los dioses ocultos.1
El ritual de los dioses ocultos.1El ritual de los dioses ocultos.1
El ritual de los dioses ocultos.1Eduardo Rolas
 
Estratégias de búsqueda y recopilación de información biomédica
Estratégias de búsqueda y recopilación de información biomédicaEstratégias de búsqueda y recopilación de información biomédica
Estratégias de búsqueda y recopilación de información biomédicaSebastián Meneses
 
Wie man gute Entwickler findet und behält
Wie man gute Entwickler findet und behältWie man gute Entwickler findet und behält
Wie man gute Entwickler findet und behältJohannes Seitz
 
SOOC1314 Workshop 1 (Auftakt) – Online Version
SOOC1314 Workshop 1 (Auftakt) – Online VersionSOOC1314 Workshop 1 (Auftakt) – Online Version
SOOC1314 Workshop 1 (Auftakt) – Online VersionSaxon Open Online Course
 
Plannig de produccion urbania 2 ecuador 18.10.10
Plannig de produccion urbania 2 ecuador 18.10.10Plannig de produccion urbania 2 ecuador 18.10.10
Plannig de produccion urbania 2 ecuador 18.10.10paomendez
 
Presentacion trabajo
Presentacion trabajoPresentacion trabajo
Presentacion trabajoJesus
 
Documentos tecnicos y cientificos
Documentos tecnicos y cientificosDocumentos tecnicos y cientificos
Documentos tecnicos y cientificosLilianaingecci
 

Andere mochten auch (20)

Examen 1
Examen 1Examen 1
Examen 1
 
Labios rotos zoe. computacion
Labios rotos zoe. computacionLabios rotos zoe. computacion
Labios rotos zoe. computacion
 
Seguridad en las_redes_sociales
Seguridad en las_redes_socialesSeguridad en las_redes_sociales
Seguridad en las_redes_sociales
 
El fenómeno comunicativo
El fenómeno comunicativoEl fenómeno comunicativo
El fenómeno comunicativo
 
PersoApp - Sichere und benutzerfreundliche Internet-Anwendungen
PersoApp - Sichere und benutzerfreundliche Internet-AnwendungenPersoApp - Sichere und benutzerfreundliche Internet-Anwendungen
PersoApp - Sichere und benutzerfreundliche Internet-Anwendungen
 
Hörgeschädigtenkunde
HörgeschädigtenkundeHörgeschädigtenkunde
Hörgeschädigtenkunde
 
Inscripcion de asignaturas UVD
Inscripcion de asignaturas UVDInscripcion de asignaturas UVD
Inscripcion de asignaturas UVD
 
¿Qué es Puertollano? #NocierreElcogas
¿Qué es Puertollano? #NocierreElcogas¿Qué es Puertollano? #NocierreElcogas
¿Qué es Puertollano? #NocierreElcogas
 
El ritual de los dioses ocultos.1
El ritual de los dioses ocultos.1El ritual de los dioses ocultos.1
El ritual de los dioses ocultos.1
 
Estratégias de búsqueda y recopilación de información biomédica
Estratégias de búsqueda y recopilación de información biomédicaEstratégias de búsqueda y recopilación de información biomédica
Estratégias de búsqueda y recopilación de información biomédica
 
Avila ancajima
Avila ancajimaAvila ancajima
Avila ancajima
 
Wie man gute Entwickler findet und behält
Wie man gute Entwickler findet und behältWie man gute Entwickler findet und behält
Wie man gute Entwickler findet und behält
 
Compendio 4º
Compendio 4ºCompendio 4º
Compendio 4º
 
SOOC1314 Workshop 1 (Auftakt) – Online Version
SOOC1314 Workshop 1 (Auftakt) – Online VersionSOOC1314 Workshop 1 (Auftakt) – Online Version
SOOC1314 Workshop 1 (Auftakt) – Online Version
 
Plannig de produccion urbania 2 ecuador 18.10.10
Plannig de produccion urbania 2 ecuador 18.10.10Plannig de produccion urbania 2 ecuador 18.10.10
Plannig de produccion urbania 2 ecuador 18.10.10
 
Presentacion trabajo
Presentacion trabajoPresentacion trabajo
Presentacion trabajo
 
Riesgoquimico
RiesgoquimicoRiesgoquimico
Riesgoquimico
 
MOOC, SOOC – WTF
MOOC, SOOC – WTFMOOC, SOOC – WTF
MOOC, SOOC – WTF
 
Documentos tecnicos y cientificos
Documentos tecnicos y cientificosDocumentos tecnicos y cientificos
Documentos tecnicos y cientificos
 
Seminario 2: estrategia de Búsqueda
Seminario 2: estrategia de BúsquedaSeminario 2: estrategia de Búsqueda
Seminario 2: estrategia de Búsqueda
 

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

System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSpeedPartner GmbH
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSpeedPartner GmbH
 
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
 
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
 
Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?FromDual GmbH
 
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
 
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
 
Extbase/Fluid: Kennenlernen und ausprobieren
Extbase/Fluid: Kennenlernen und ausprobierenExtbase/Fluid: Kennenlernen und ausprobieren
Extbase/Fluid: Kennenlernen und ausprobierenSpeedPartner GmbH
 
SLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSchlomo Schapiro
 
Puppet: Designing modules & repositories
Puppet: Designing modules & repositoriesPuppet: Designing modules & repositories
Puppet: Designing modules & repositoriesinovex GmbH
 
Compact, Compress, De-DUplicate
Compact, Compress, De-DUplicateCompact, Compress, De-DUplicate
Compact, Compress, De-DUplicateUlrich Krause
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondUlrich Krause
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex GmbH
 
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package ManagerEinfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package ManagerLenz Grimmer
 
PostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie DatenbankalternativePostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie DatenbankalternativePeter Eisentraut
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Nane Kratzke
 
Puppet: Aufbau einer Puppet Enterprise Umgebung (Webinar vom 28.03.2014)
Puppet: Aufbau einer Puppet Enterprise Umgebung (Webinar vom 28.03.2014)Puppet: Aufbau einer Puppet Enterprise Umgebung (Webinar vom 28.03.2014)
Puppet: Aufbau einer Puppet Enterprise Umgebung (Webinar vom 28.03.2014)NETWAYS
 

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

System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
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)
 
AdminCamp 2011 Performance
AdminCamp 2011 PerformanceAdminCamp 2011 Performance
AdminCamp 2011 Performance
 
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
 
Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?
 
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
 
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
 
Extbase/Fluid: Kennenlernen und ausprobieren
Extbase/Fluid: Kennenlernen und ausprobierenExtbase/Fluid: Kennenlernen und ausprobieren
Extbase/Fluid: Kennenlernen und ausprobieren
 
SLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauen
 
Daos
DaosDaos
Daos
 
Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
 
Puppet: Designing modules & repositories
Puppet: Designing modules & repositoriesPuppet: Designing modules & repositories
Puppet: Designing modules & repositories
 
Compact, Compress, De-DUplicate
Compact, Compress, De-DUplicateCompact, Compress, De-DUplicate
Compact, Compress, De-DUplicate
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package ManagerEinfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
 
PostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie DatenbankalternativePostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie Datenbankalternative
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)
 
Puppet: Aufbau einer Puppet Enterprise Umgebung (Webinar vom 28.03.2014)
Puppet: Aufbau einer Puppet Enterprise Umgebung (Webinar vom 28.03.2014)Puppet: Aufbau einer Puppet Enterprise Umgebung (Webinar vom 28.03.2014)
Puppet: Aufbau einer Puppet Enterprise Umgebung (Webinar vom 28.03.2014)
 

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
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishSpeedPartner 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 (17)

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
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnish
 
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 LinuxTag, 23.05.2012 Seite: 1 / 33© SpeedPartner GmbH System-Management-Trio Zentrale Verwaltung mit facter, puppet und augeas
  • 2. Verwaltung mit facter, puppet und augeas LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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.9.0 domain => example.com facterversion => 1.6.5 fqdn => demohost.example.com hostname => demohost is_virtual => true virtual => kvm kernel => Linux kernelmajversion => 2.6 kernelrelease => 2.6.32-220.4.2.el6.x86_64 kernelversion => 2.6.32 manufacturer => Red Hat operatingsystem => CentOS operatingsystemrelease => 6.2 osfamily => RedHat physicalprocessorcount => 4 processorcount => 4 uptime_hours => 136 uptime_seconds => 490098
  • 14. Verwaltung mit facter, puppet und augeas LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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 LinuxTag, 23.05.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/