Sie sind auf Seite 1von 4

Puppet

Installation:
Benötigte Pakete:
• facter-1.5.8 (oder höhere Version)
• puppet-2.6.1

Das facter und puppet Paket entpacken mit tar –xvzf <Paketname>

In den beiden neuen Directories, die install.rb ausführen mit ./install.rb

Nach der Installation der beiden Pakete kann man überprüfen, ob facter installiert w
urde indem man einfach facter eingibt!

hier erscheint eine Auflistung von Systemdaten.


Und ob Puppet installiert wurde, kann man mit folgenden Befehl überprüfen:
puppet --version

Nun muss ein puppet.conf File erstellt werden, dazu geht man in die Directory v
on puppet: /etc/puppet. Hier wird mit dem Befehl:
puppet --genconfig > puppet.conf
Dies erzeugt das Config File von puppet.

Nun, wird der Server genauso installiert!


Nach der Installation des Servers wird beim Client, der Server eingetragen.
Dazu muss die /etc/hosts Datei mit dem vi geöffnet werden.
Hier wird nun die IP des Servers eingetragen, und die Namen, nach denen er auflöst
!
Beim Server, dasselbe bei /etc/hosts eintragen.
Beim Puppetserver als Puppet master registrieren:
/usr/sbin/puppetmasterd
Der Client muss sich jetzt beim Server anmelden mit dem Befehl:
/usr/sbin/puppetd
Und der Server muss die Verbindung erlauben, man kann überprüfen, welche Clients sic
h mit dem Server verbinden wollen mit dem Befehl:
/usr/sbin/puppetca --list
Die Clients die man authentifizieren will, mit:
/usr/sbin/puppetca --sign <client_name>
beim Server anmelden.

Soweit zu der Installation und Konfiguration zur Benützung von Puppet.


Anwendungen
Alle Skripts werden im Puppetmaster angefertigt und von dort an alle oder belieb
ige Clients verteilt!
Hierzu legen wir im /etc/puppet einen manifests Ordner an.
Puppet Skripts enden alle mit dem Kürzel „pp“. Als Default Skript ruft Puppet, das sit
e.pp auf.
Im site.pp kann man die verschiedensten Klassen importieren und auch aufrufen. S
omit bleibt das site.pp, meiner Meinung nach auch sehr übersichtlich, da man nicht
den ganzen Code hier reinschreibt.
Im manifests Ordner habe ich einen Unterordner classes erstellt, wo alle primiti
ven Klassen beinhaltet sind, die keine Daten verschicken, sondern rein Rechte über
prüfen, ändern, usw.
Diese Klassen importiere ich alle in der site.pp mit dem Befehl:
import “classes/*”, somit kann ich auf alle Klassen zugreifen, die ich in dem Ordner
classes geschrieben habe.

Nun muss ich der site.pp noch sagen, was ich anwenden will und vor allem bei wem
diese Anwendungen greifen sollen.
Dies wird mit den Nodes gelöst, man kann bestimmte Nodes angeben, aber auch einen
default Node, wenn keiner für die aufgelisteten Nodes zutrifft.

Jetzt eine Klasse inkludieren, die angewendet werden soll bei default.

Dieser Befehl inkludiert die Klasse day, die im Ordner von Classes liegt und führt
alle Operationen davon aus.

Die Klasse day:


Das File “/etc/test/day” auf dem Client wird überprüft, ob der mode 440 ist, wenn nicht
wird dieser gesetzt. Ob der owner lrcfkru ist, wenn nicht dann wird dieser geset
zt und bei der group dasselbe.
Subscribe prüft das File ob Änderungen, daran gemacht wurden, wenn ja dann wird ein
neuer Mode für Month gesetzt.
Require überprüft ob das File Month, vorher behandelt wird. Wenn nicht wirft es eine
n Fehler.
Wenn man bestimmte Änderungen auch nur bestimmten Clients schicken will, dann kann
man dies mit dem Clientnamen angeben:
{

Zum Beispiel include date, kommt vom import date, ganz oben, dies ist eine Klass
e die auch Daten versenden kann und die werden in der /etc/puppet/modules/<modul
e_name>date/manifests/init.pp
Beinhaltet das Skript, das ausgeführt gehört für date.
Im Ordner: /etc/puppet/modules/date/files/<benötigten Files> zum versenden.

Mit dem Befehl source => puppet:///date/date, wird angegeben welches File zu ver
senden ist. Das erste date ist für den Ordner date, der das manifest und die files
beinhaltet und das zweite date ist für das File date was im ordner files liegt, d
as rüber geschickt gehört!

Hier wird das Package httpd geprüft, ob es installiert ist!


Beim Service mdmpd, wird das Package httpd benötigt um die Einträge auf true und sto
pped zu setzen.
Mit Puppet kann man nicht nur Rechte ändern, setzen usw. sondern auch Befehle einf
ach nur ausführen!

Bei der Klasse sshd wird ein Vorteil vom Facter package miteingebettet.

Das $ vor operatingsystem steht dafür, das es eine Variable ist und das ? steht da
für das eines der unteren Elemente ausgewählt wird, also entweder solaris oder redha
t bei facter ausgegeben wird und dann den Parameter für operatingsystem zugewiesen
bekommt.
der service sshd wird durchgestartet, wenn sich bei dem file sshdconfig etwas ve
rändert hat, dafür sorgt das subscribe.
Soweit erstmal zu den Anwendungen!
Automatisierung
Damit die Clients automatisch immer wieder den Server kontaktieren, brauchen wir
einen sogenannten cron job!
Den rufen wir mit dem Befehl:
crontab -e auf!

Hier tragen wir den job folgendermaßen ein:


* * * * * /usr/sbin/puppetd --test > /var/log/hugo.log 2>&1
Die 5 Sterne bedeuten, dass minütlich der Server kontaktiert wird und die Statusme
ldungen nach /var/log/hugo.log geschrieben werden.
Um die Abfolge alle 2 Minuten machen zu wollen, gibt man nach dem ersten Stern /
2 ein, also */2 * * * *.

Man kann hier überprüfen, ob er es alle 2 Minuten macht indem man dem Befehl: watch
less /var/log/hugo.log eingibt.

jetzt führt der cron job jede 2 Minuten den Job aus!

Bei 1 Minute geschieht nichts!