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
2021-05-27
Time to read
5 minutes reading time

Einleitung

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

Dieses Tutorial vermittelt die Basisschritte um eine Puppet Master / Agent Umgebung auf Ubuntu 20.04 aufzusetzen. Dieses Tutorital geht nicht in Gänze auf die Master / Agent Konfigurationsmöglichkeiten ein, auch die Puppet Module werden nicht behandelt. Weiterführende Informationen finden Sie hier

Vorraussetzungen

  • 2 Ubuntu 20.04 Server
  • Benutzen eines NTP Service (Zeitunterschiede können zu Problemen führen)
  • Port 8140 in der Firewall für eingehenden Traffic freigeben (INPUT chain)
  • DNS Einträge der Server. Fehlen diese müssen sie jeweils in die /etc/hosts Datei geschrieben werden: (IP und Hostnamen aus dem Beispiel bitte passend ersetzen)
10.0.0.20 puppetmaster.example.com
10.0.0.21 puppetagent.example.com

Schritt 1 - Puppet Master installieren

Mit den folgenden Befehlen wird der Puppet Master installiert, dabei wird das Paket direkt von Puppetlabs in der aktuellsten Version bezogen.

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

Um den Puppetserver zu starten und auch nach Neustart automatisch starten zu lassen werden die folgenden Befehle genutzt.

sudo systemctl start puppetserver
sudo systemctl enable puppetserver

sudo systemctl status puppetserver sollte eine passende Ausgabe liefern und zeigen das der Service erfoglreich gestartet wurde.

Erhalten Sie beim Starten des Puppetservers folgende Fehlermeldung:

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 vim /etc/default/puppetserver
JAVA_ARGS="-Xms1g -Xmx1g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"

Sollten Sie Probleme mit dem Zertifikat feststellen können Sie die CA mittels sudo rm -r /etc/puppetlabs/puppet/ssl/ löschen und mit sudo puppetserver ca setup neu erstellen.

Schritt 2 - Puppet Agent installieren

Um den Puppet Agent zu installieren gehen Sie ähnlich vor:

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

In der Puppet Agent Konfiguration muss der Puppet Master angegeben werden. Hier können Sie u.a. auch ein Intervall für die Puppet runs definieren: sudo vim /etc/puppetlabs/puppet/puppet.conf

[main]
certname = puppetagent.example.com
server = puppetmaster.example.com
runinterval = 30m

Auch hier starten Sie Puppet und aktivieren den automatischen Start beim Bootvorgang.

sudo systemctl start puppet
sudo systemctl enable puppet

sudo systemctl status puppet bestätigt wieder den erfolgreichen Start des Dienstes.

Schritt 3 - Zertifikate signieren

Nun da Puppet Master und Puppet Agent installliert und konfiguriert sind, geht es an den Austausch unter 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. Alle offenen Zertifikatsanfragen können Sie auf dem Puppet Master wie folgt anzeigen lassen

sudo puppetserver ca list

Beispielausgabe:

Requested Certificates:
    puppetagent.example.com       (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 sehen Sie alle anfragenden Agents, hier sollten Sie darauf achten nur Ihnen bekannte Zertifikate zu signieren.

sudo puppetserver ca sign --certname puppetagent.example.com

Ob die Verbindung zwischen Puppet Master und Agent funktioniert können Sie auf dem Puppet Agent mittels folgendem Befehl überprüfen: sudo /opt/puppetlabs/bin/puppet agent --test

Die Ausgabe sollte beim ersten Mal ungefähr so aussehen

Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for puppetagent.example.com
Info: Certificate Request fingerprint (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
Info: Downloaded certificate for puppetclient from https://puppetmaster.example.com:8140/puppet-ca/v1
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for puppetclient
Info: Applying configuration version '1621334490'
Info: Creating state file /opt/puppetlabs/puppet/cache/state/state.yaml
Notice: Applied catalog in 0.01 seconds

Sie können nun anfangen Ihre Server via Puppet automatisiert zu managen.

Möchten Sie ein Zertifikat wieder entfernen können Sie dies wie folgt tun:

sudo puppetserver ca clean --certname puppetagent.example.com

Schritt 4 - Beispieldatei erstellen

Um eine Systemkonfiguration zu beschreiben werden sogenannte Manifeste benötigt. An dieser Stelle sei ein einfaches Beispiel genannt um die Basisfunktion zu zeigen. Das Puppet Standard Manifest findet sich unter /etc/puppetlabs/code/environments/production/manifests/site.pp.

Sollte die Datei noch nicht existieren, legen Sie sie an. Dieses Beispiel zeigt, wie Sie auf den Puppet Agent eine Datei anlegen können:

node 'puppetagent.example.com' {  # wird nur für diesen Node ausgeführt / FQDN verwenden
  file {'/tmp/example-hello':     # Ressourcen Typ und Dateiname
    ensure  => present,           # muss vorhanden sein
    mode    => '0644',            # Zugriffsrechte
    content => "Hello World!\n",  # Datei Inhalt
  }
}

node default {} # wird für alle, nicht explizit erwähnten Nodes ausgeführt

Wenn nun auf dem Puppet Agent der automatisierte Puppet run läuft wird diese Datei erstellt. Alternativ können Sie auch sudo /opt/puppetlabs/bin/puppet agent --test auf dem Puppet Agent ausführen. Nach einem erfolgreichen Puppet run sollte cat /tmp/example-hello die Ausgabe Hello World! liefern.

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