Forgot your password?

Forgot your username?

All about IT, Web and Development.
By users for users.

Raspberry Pi als Puppet Master - Teil 1



Gerade bei wachsenden Systemlandschaften ist ein zentrales Konfigurationsmanagement wie z.B. mit Puppet von großer Bedeutung.



Zur Verwaltung mehrerer Raspberry Pis bietet sich dies natürlich auch an. Daher möchte ich in dieser zweiteiligen Serie vorstellen wie man ein Raspberry Pi als Puppet Master konfiguriert.


Installation


Betriebssystem


Im ersten Schritt muss die Raspbian Distribution installiert werden. Zentrales Element bei Puppet ist der Hostname. Daher muss nach der Installation der Hostname gesetzt werden.

Hier muss dabei der FQDN verwendet werden, um später eine passende Zuordnung zu ermöglichen.

puppetmaster.foxplex.local

Um genug Arbeitsspeicher für den Betrieb zur Verfügung zu haben muss der Memory Split angepasst werden. Den Speicher für die GPU wird hier auf 16 MB runtergesetzt.


Puppet


Zunächst binden wir das Puppetlabs Repository ein.

wget https://apt.puppetlabs.com/puppetlabs-release-wheezy.deb
sudo dpkg -i puppetlabs-release-wheezy.deb


Anschließend werden die Paketlisten neu eingelesen.

sudo apt-get update

Vor der Installation von Puppet werden noch einige Abhängigkeiten benötigt.
sudo apt-get install bind9-host lsb-release ruby-rgen ruby-json

Weiterhin wird das Paket facter in einer Version >= 1.7 benötigt, leider ist in den Raspbian Paketquellen nur eine veraltete Version enthalten. Daher bedienen wir uns kurzerhand bei Ubuntu.

wget http://de.archive.ubuntu.com/ubuntu/pool/main/f/facter/facter_1.7.5-1ubuntu1_all.deb

sudo dpkg -i facter_1.7.5-1ubuntu1_all.deb


Jetzt kann der Puppet Master installiert werden. An dieser Stelle installieren wir gleich das Paket puppetmaster-passenger, wodurch als Webserver gleich Apache eingesetzt wird.

sudo apt-get install puppetmaster-passenger puppetdb puppetdb-terminus

Während der Installation wird auch nach dem gewünschten MySQL Root Passwort gefragt, welches man hier gleich vergeben sollte. Per Standard wird Ruby in der Version 1.9 verwendet. Allerdings kann es hierbei mit Puppet zu Problemen kommen. Daher stellen wir die Standardversion auf 1.8.

sudo update-alternatives --set ruby /usr/bin/ruby1.8


Konfiguration


Nachdem die Installation abgeschlossen ist, folgt die Konfiguration der Puppet Komponenten.


Puppet Master


Zunächst wird die Autosign Funktion aktiviert, damit werden neu angelegte Server automatisch am Master registriert. Hierzu die Datei /etc/puppet/autosign.conf editieren.

# Automatische Registrierung aller Server
*


Puppet DB


Als ersten Schritt erzeugen wir die SSL Zertifikate für Puppet DB.


Folgend werden die Verbindungseinstellungen in der Datei /etc/puppet/puppetdb.conf angepasst.

[main]
   server = puppetmaster.foxplex.local
   port = 8081


Jetzt wird das Speicherbackend noch auf Puppet DB umgestellt. Hierzu sind zunächst Änderungen in der Datei /etc/puppet/routes.yaml notwendig.

master:
facts:
terminus: puppetdb
cache: yaml


Außerdem muss noch die zentrale Konfigurationsdatei /etc/puppet/puppet.conf angepasst werden.

[agent]
   server = puppetmaster.foxplex.local

[master]
   storeconfigs = true
   storeconfigs_backend = puppetdb



Fileserver


Als letzten Schritt konfigurieren wir noch den Puppet Fileserver. Die Konfiguration befindet sich in der Datei /etc/puppet/fileserver.conf.

[files]
   path /etc/puppet/files
   allow *.foxplex.local



Startskripte


Nach der Installation sind die Init Skripte standardmäßig deaktiviert. Zur Aktivierung des Puppet Dienstes editieren wir zunächst die Datei /etc/default/puppet:

START=yes

Zusätzlich aktivieren wir den automatischen Start. Hier auch für den Apache Webserver, welcher den Puppet Master betreibt.


Zum Abschluss einen Neustart durchführen. Nach dem Start kann es nochmal bis zu 15 Minuten dauern, bis die Puppet DB gestartet ist. Die CPU Load ist bis dahin auf 100%.



Erster Test


Für den ersten Test führen wir einen Testdurchlauf von Puppet durch.

sudo puppet agent -t



Schlägt dieser Versuch mit der nachfolgenden Meldung fehlt, ist der Puppet DB Dienst noch nicht gestartet. Wie oben beschreiben kann dies etwas dauern.

Warning: Error 400 on SERVER: Could not retrieve facts for puppetmaster.esn.local: Failed to submit 'replace facts' command for puppetmaster.esn.local to PuppetDB at puppetmaster.esn.local:8081: Connection refused - connect(2)

Einstieg in Puppet


Um sich ein genaueres Bild von Puppet zu verschaffen empfehlen wir das Puppet Starter Guide. Hier sind alle notwendigen Infos und Anleitungen zu Puppet übersichtlich zusammengefasst.


Fazit


Damit ist die Grundinstallation und Konfiguration des Puppet Masters auf dem Raspberry Pi abgeschlossen. Im nächsten Teil geht es dann mit der Anbindung des Puppet Dashboards weiter.

Michael Kostka

Fachinformatiker / Systemintegration
Ich schreibe hier regelmäßig zu den Themen Android, Web, Linux und Hardware.

Raspberry Pi Starter Kit
DataCloud

Leave a comment

I have read the privacy policy and agree to electronically store and process my input data to answer the request.