Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Installation und Konfiguration von Puppet Master und Agent

profile picture
Author
Nadine Metzger
Published
2024-07-31
Time to read
7 minutes reading time

Einleitung

Puppet ist ein Open-Source Konfigurationsmanagement Tool, welches es dem Benutzer erlaubt eine beliebige Anzahl an Servern automatisiert zu konfigurieren.

Das heißt, mit Puppet kann man auf einem Hauptserver ("Master") Anweisungen erstellen, die festlegen, wie andere Server eingerichtet werden sollen. Diese Anweisungen werden automatisch von allen anderen Servern ("Agenten") übernommen.

Dieses Tutorial vermittelt die Basisschritte, um eine Puppet Master / Agent Umgebung auf Ubuntu 24.04 aufzusetzen. Dieses Tutorial geht nicht in Gänze auf die Master / Agent Konfigurationsmöglichkeiten ein, auch die Puppet Module werden nicht behandelt. Für weitere Informationen, siehe die offizielle Dokumentation.

Voraussetzungen

  • 2 Server mit Ubuntu 24.04
    • Zugriff auf den root-Benutzer oder einen Benutzer mit sudo-Rechten
  • Benutzen eines NTP Service (Zeitunterschiede können zu Problemen führen)
  • Port 8140 in der Firewall für eingehenden Traffic freigeben (INPUT chain)

Beispiel-Benennungen

  • Server 1:

    Hostname: puppetmaster
    Auf diesem Server wird Puppet Master installiert.

  • Server 2:

    Hostname: puppetagent
    Auf diesem Server wird Puppet Agent installiert.

Schritt 1 - Hostnamen hinzufügen

Bevor Puppet installiert wird, muss auf beiden Servern ein Eintrag für die Hostnamen hinzugefügt werden. Bearbeite dafür auf beiden Servern diese Datei:

sudo nano /etc/hosts

  • Auf dem Server, auf dem Puppet Master installiert werden soll

    » Füge in der Zeile, in der "localhost" steht zusätzlich "puppet" hinzu.

    » Füge eine neue Zeile ein, in der die IP-Adresse vom Server steht, auf dem Puppet Agent installiert werden soll, gefolgt von "puppetagent".

    127.0.0.1 localhost puppet
    <ip_of_agent_server> puppetagent

  • Auf dem Server, auf dem Puppet Agent installiert werden soll

    » Füge eine neue Zeile ein, in der die IP-Adresse vom Server steht, auf dem Puppet Master installiert werden soll, gefolgt von "puppet".

    <ip_of_master_server> puppet

Schritt 2 - Puppet Master installieren

Dieser Schritt muss ausschließlich auf Server 1 (puppetmaster) ausgeführt werden.

Mit den folgenden Befehlen wird der Puppet Master installiert. Dabei wird das Paket direkt von Puppet in der aktuellsten Version für Ubuntu 24.04 (noble) bezogen.

wget https://apt.puppet.com/puppet-release-noble.deb
sudo dpkg -i puppet-release-noble.deb
sudo apt update
sudo apt install puppetserver 

Prüfe mit puppetserver --version, ob Puppet Master erfolgreich installiert wurde. Als nächstes kann der Puppetserver mit diesen Befehlen gestartet werden. Zusätzlich soll der Puppetserver auch nach einem Reboot automatisch gestartet werden. Anschließend sollte der Status geprüft werden, um sicherzugehen, dass es keine Fehlermeldungen gibt.

sudo systemctl start puppetserver
sudo systemctl enable puppetserver
sudo systemctl status puppetserver

Solltest du beim Starten des Puppetservers folgende Fehlermeldung erhalten:

Job for puppetserver.service failed because the control process exited with error code

Kann das auf mangelnden RAM hinweisen. Hier kann es helfen in der Puppet Konfiguration die Arbeitsspeichergröße anzupassen, bspw. auf 1g.

sudo nano /etc/default/puppetserver
JAVA_ARGS="-Xms1g -Xmx1g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"

Bei Problemen mit dem Zertifikat, kann mittels sudo puppetserver ca setup ein Neues erstellt werden.

Schritt 3 - Puppet Agent installieren

Dieser Schritt muss ausschließlich auf Server 2 (puppetagent) ausgeführt werden.

Um den Puppet Agent zu installieren, nutze folgende Befehle:

wget https://apt.puppet.com/puppet-release-noble.deb
sudo dpkg -i puppet-release-noble.deb
sudo apt update 
sudo apt install puppet-agent 

Prüfe mit puppet --version, ob Puppet Agent erfolgreich installiert wurde. Wenn ja, muss in der Puppet Agent Konfiguration der Puppet Master angegeben werden. In dieser Datei kann auch ein Intervall für die Puppet Runs definiert werden. Mit dem unteren Beispiel, wird der Puppet Run alle 30 Minuten ausgeführt (siehe "runinterval").

sudo nano /etc/puppet/puppet.conf

Füge folgenden Inhalt hinzu:

[main]
certname = puppetagent
server = puppet
runinterval = 30m

Wie zuvor, starte nun Puppet, richte ein, dass Puppet auch nach einem Reboot automatisch startet und prüfe ob der Service ohne Fehler starten konnte.

sudo systemctl start puppet
sudo systemctl enable puppet
sudo systemctl status puppet

Schritt 4 - Zertifikate signieren

Nun da Puppet Master und Puppet Agent installiert und konfiguriert sind, geht es an die Kommunikation zwischen den Beiden. Hierzu verwendet Puppet Zertifikate, welche vom Puppet Master signiert werden müssen. Durch den Start des Puppet Agents wurde bereits eine Zertifikatsanfrage an den Puppet Master gestellt. Offene Zertifikatsanfragen können wie folgend beschrieben verwaltet werden.


  • Auf puppetmaster

    Alle offenen Zertifikatsanfragen anzeigen:

    sudo puppetserver ca list

    Beispielausgabe:

    Requested Certificates:
        puppetagent       (SHA256)  55:F3:8B:8D:E8:41:25:0D:A1:CC:0C:D9:73:98:99:6E:73:77:83:97:9D:30:98:03:14:62:3B:F8:7A:25:35:41

    In der Ausgabe werden alle anfragenden Agents gelistet. Achte darauf, nur Zertifikate zu signieren die dir bekannt sind.

    sudo puppetserver ca sign --certname <name>

  • Auf puppetagent

    Ob die Verbindung zwischen Puppet Master und Agent funktioniert, lässt sich mit folgendem Befehl prüfen:

    puppet ssl bootstrap

    Die Ausgabe sollte ungefähr so aussehen:

    Info: csr_attributes file loading from /home/holu/.puppet/etc/csr_attributes.yaml
    Info: Creating a new SSL certificate request for puppetagent
    Info: Certificate Request fingerprint (SHA256): 2F:2D:8F:94:82:F9:1B:B7:E3:C8:80:DB:99:29:B4:64:AC:BA:F9:E1:D6:79:4C:5F:26:0B:23:8A:1A:78:59:FF
    Info: Downloaded certificate for puppetagent from https://puppet:8140/puppet-ca/v1
    Notice: Completed SSL initialization

    Sollte eine Fehlermeldung wie Couldn't fetch certificate from CA server angezeigt werden, verbinde dich erneut mit Server 1 puppetmaster, liste alle offenen Zertifikatanfragen und signiere das Zertifikat falls nötig erneut.


Du kannst nun anfangen deine Server via Puppet automatisiert zu managen.


Schritt 5 - Beispieldatei erstellen

Um eine Systemkonfiguration zu beschreiben, werden sogenannte Manifeste benötigt. In diesem Tutorial wird ein einfaches Beispiel verwendet, um die Basisfunktion zu zeigen.

Verbinde dich mit puppetmaster und erstelle ein neues Manifest:

sudo mkdir -p /etc/puppet/code/environments/production/manifests
sudo nano /etc/puppet/code/environments/production/manifests/site.pp

Füge folgenden Inhalt hinzu:

node 'puppetagent'             {  # will be executed only for this node; use hostname
  file { '/tmp/example-hello':    # resource type and filename
    ensure => present,            # must be present
    mode => '0644',               # file permission
    content => "Hello World!\n",  # file content
  }
}

node default {} # will be executed for all nodes not mentioned explicitly

Mit dem nächsten automatischen Puppet Run, wird auf dem puppetagent eine neue Datei erstellt. In "Schritt 3" wurde der Puppet Run auf alle 30 Minuten eingerichtet (runinterval = 30m). Um sofort einen Puppet Run durchlaufen zu lassen, verbinde dich mit puppetagent und nutze diesen Befehl, um den Puppet Run manuell zu starten:

sudo /usr/bin/puppet agent --test

Nachdem der Puppet Run erfolgreich durchlaufen ist, solltest du den Output "Hello World!" bekommen, wenn du diesen Befehl auf puppetagent ausführst:

cat /tmp/example-hello

Ergebnis

Puppet sollte nun installiert sein und du kannst direkt mit deinen eigenen Manifesten loslegen!

License: MIT
Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue
Try Hetzner Cloud

Get 20€ free credit!

Valid until: 31 December 2024 Valid for: 3 months and only for new customers
Get started
Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more