• Keine Ergebnisse gefunden

ICT-Infrastruktur für Bildungsaufgaben

N/A
N/A
Protected

Academic year: 2021

Aktie "ICT-Infrastruktur für Bildungsaufgaben"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

ICT-Infrastruktur für Bildungsaufgaben

8. Konfigurationsmanagement

Thomas Leitner <thomas.leitner@univie.ac.at>

Fakultät für Mathematik, Universität Wien Sommersemester 2013

Letzte Änderung: 2013-09-20 20:46:17 +0200

Inhalt

Puppet (Konfigurationsverwaltung)

Puppet

Puppet ist eine Konfigurationsmanagementsystem (geschrieben in der Programmiersprache Ruby).

Der große Vorteil dabei ist, dass Puppet weiß, wie die verschiedensten Änderungen auf den unterstützten Betriebssystemen durchgeführt werden müssen.

Es wird dabei der gewünschte Zustand, in dem sich das System befinden soll, mit Hilfe einer deklarativen Sprache in Dateien mit der Endung

.pp

(sogenannten Manifesten) definiert.

Die Sprache erlaubt unter anderem die Definition von Ressourcen, die auf dem System (nicht) vorhanden sein sollen, wobei konditionelle Ausdrücke verwendet werden können.

Die Client-Software von Puppet interpretiert das Manifest und erstellt daraus einen Katalog, der spezifisch für das System ist. Der Inhalt des Katalog wird dann mit dem aktuellen Zustand abgeglichen und nötige Änderungen werden durchgeführt.

Die Dokumentation zu Puppet ist sehr ausführlich, beginnen sollte man mit Learning Puppet (erklärt grundlegenden Begriffe und Funktionsweisen).

Puppet - Nutzungsvarianten

Puppet kann sowohl mit als auch ohne Server betrieben werden. Beide Varianten haben Vor- und Nachteile. Werden viele System mit Puppet verwaltet, sollte man die Server-Variante verwenden.

Zum Betrieb ohne Server braucht man nur das Paket puppet-common installieren. Diese Variante ist zum Beispiel ideal für die Konfiguration eines oder weniger Systeme (z.B. zur Konfiguration des eigenen Rechners).

Für den Server-Betrieb benötigt man das Paket puppetmaster für den Server und das Paket puppet für die Clients. Nach der Installation läuft der Server mit einer Standardkonfiguration.

Das Konfigurationsverzeichnis ist

/etc/puppet

mit den folgenden Dateien:

auth.conf

→ Allgemeine Zugriffssteuerung

fileserver.conf

→ Zugriffssteuerung für die Dateiserverkomponente

puppet.conf

→ Konfigurationsdatei

Die Konfigurationsdatei enthält Blöcke für die verschiedenen Komponenten (

agent

,

master

, …),

in denen die Konfigurationsoptionen gesetzt werden können.

Puppet - Facter

Puppet benutzt das Programm Facter, um Informationen über ein System herauszufinden. Wie Puppet ist auch Facter in Ruby implementiert und kann um zusätzliche Informationsmodule erweitert werden.

Die durch Facter gewonnen Informationen können in Manifesten als Variablen und somit auch in

(2)

Bedingungen benutzt werden.

Beispielausgabe:

$ facter | head -n 5 architecture => amd64 augeasversion => 0.10.0

boardmanufacturer => Oracle Corporation boardproductname => VirtualBox

boardserialnumber => 0

Puppet - Module

Neben der Definition von Ressourcen in Manifesten können auch Dateien und Templates zur Verwendung hinterlegt werden.

Um die Wiederverwendbarkeit zu erhöhen, können zusammengehörige Manifeste, Dateien und Templates in Module verpackt werden.

Es gibt mittlerweile schon sehr viele vorgefertigte Module, die man einbinden kann. Die Webseite Puppet Forge wird von den Entwicklern von Puppet betreut und enthält eine Vielzahl an Modulen.

Puppet - Beispielmanifest case $operatingsystem {

centos, redhat: { $service_name = 'ntpd' } debian, ubuntu: { $service_name = 'ntp' } }

package { 'ntp': ensure => installed } service { 'ntp':

name => $service_name, ensure => running,

enable => true,

subscribe => File['ntp.conf'], }

file { 'ntp.conf':

path => '/etc/ntp.conf', ensure => file,

require => Package['ntp'],

source => "puppet:///modules/ntp/ntp.conf", }

Puppet - ohne Server

Einzelne Änderungen an Ressourcen können über

puppet resource

gemacht werden bzw.

kann über diesen Befehl der Zustand einer Ressource als Puppet-Manifest ausgegeben werden.

$ puppet resource user root shell=/bin/sh

notice: /User[root]/shell: shell changed '/bin/bash' to '/bin/sh' user { 'root':

ensure => 'present', shell => '/bin/sh', }

Der Befehl

puppet apply

wird benutzt, um ein ganzes Manifest auf ein System anzuwenden.

Dazu wird kein Server benötigt.

$ puppet apply manifest.pp

(3)

Puppet - mit Server

Die Standardserverkonfiguration nach der Installation des Pakets reicht für wenige Clients aus (bei vielen Clients sollte man einen anderen als den eingebauten Webserver Webrick verwenden).

Damit ein Client weiß, wie der zu nutzende Server heißt, muss man in der Hauptkonfigurationsdatei im Block

agent

die Variable

server

auf die IP-Adresse (oder den DNS-Namen) des Servers

setzen.

Die Kommunikation zwischen Client und Server wird über SSL verschlüsselt und jeder Client braucht ein gültiges, vom Server signiertes Zertifikat, um einen Katalog zu bekommen. Daher wird beim erstmaligen Aufruf von

puppet agent

ein Zertifikatsfehler ausgegebgen.

Um diesen Fehler zu beheben, muss am Server die Zertifikatsanfrage bestätigt und das Client- Zertifikat mittels

puppet cert sign HOSTNAME

signiert werden. Danach sollte der Client ohne Problem auf den Server zugreifen können.

Bei einer Anfrage des Clients interpretiert der Server das in

/etc/puppet/manifests/site.pp

definierte Manifest und erstellt daraus einen Katalog, der an den Client zurückgesandt und auf das System angewandt wird.

Puppet - Beispiele

Anlegen eines lokalen Benutzers und einer lokalen Gruppe (Ressourcen user und group) Installation von Paketen, die verschiedene Namen unter verschiedenen Distributionen haben (Ressource package)

Erstellen eines Moduls zur Einrichtung eines OpenSSH-Servers Ändern von Dateien mit Hilfe von augeas

Copyright und Lizenz

Copyright: Thomas Leitner thomas.leitner@univie.ac.at Lizenz: Creative Commons CC BY-NC-SA

„Namensnennung-Keine kommerzielle Nutzung-Weitergabe unter gleichen Bedingungen 3.0 Österreich.“ - http://creativecommons.org/licenses/by-nc-sa/3.0/at/

Referenzen

ÄHNLICHE DOKUMENTE

• Die Aufgaben sind in Gruppen eingeteilt und die Abgabe von Aufgaben erfolgt aus- schließlich in diesen Gruppen (d.h. sobald man alle Aufgaben einer Gruppe erledigt hat, kann man

[r]

Prozess A ruft fork() auf → Kindprozess B entsteht als Kopie des Prozesses A (Optional) Im Kindprozess B mittels exec() anderen Programmcode ausführen. Prozess A warte

Es ist empfehlenswert, nicht direkt als root einzuloggen, sondern über su oder sudo kurzfristig root zu werden (besser nachvollziehbar, wer wann etwas als root gemacht hat)..

Unter Windows ist es auch so, dass die Applikationen alle benötigten Bibliotheken, die nicht automatisch auf dem System installiert sind, mitinstallieren!. Im Gegensatz dazu wird

Da die Passwortdatei /etc/passwd von allen Benutzer gelesen werden können soll, ist es nicht ratsam, darin die Passwörter zu speichern.. Daher gibt es die Möglichkeit,

Jedes Gerät, das über das Internet mit anderen Geräten kommunizieren will, braucht eine eindeutige IP-Adressen (Notiz am Rande: Es gibt auch Möglichkeiten, das zu umgehen, z.B.

Eine Regel besteht dabei aus einer oder mehreren Bedingungen und einem Ziel, das angibt, was mit einem passenden Paket gemacht werden soll.. Es gibt sehr viele Bedingungen, die