2026-01-29 18:41:59 +01:00
2025-12-08 18:50:29 +01:00
2026-01-29 18:41:59 +01:00
2026-01-29 18:41:59 +01:00
2026-01-29 18:41:59 +01:00
2026-01-29 18:41:59 +01:00
2026-01-29 18:41:59 +01:00
2026-01-29 18:41:59 +01:00
2026-01-29 18:41:59 +01:00

Dockerized Puppet Master (OpenVox)

Dieses Projekt konfiguriert einen Puppet Master, der in Docker-Containern läuft. Es verwendet Docker Compose für die Orchestrierung der Dienste, einschließlich des Puppet Masters (openvox), einer PostgreSQL-Datenbank und anderer notwendiger Komponenten.

Die Konfiguration wurde optimiert, um portabel und einfach auf neuen Servern ausrollbar zu sein.

Inhaltsverzeichnis


Verzeichnisstruktur

  • docker-compose.yml: Die zentrale Datei, die alle Docker-Services, Volumes und Netzwerke definiert.
  • code/: Enthält den Puppet-Code (Manifeste, Module etc.), der von den Agenten angewendet wird.
  • config/: Beinhaltet Konfigurationsdateien für die verschiedenen Dienste.
  • ca_data/: Wichtiges Verzeichnis. Dies ist ein persistenter Speicher für die Certificate Authority (CA) des Puppet Masters. Es enthält alle signierten Zertifikate und wird per "bind mount" eingebunden.
  • hiera_config.md: Erklärt die Konfiguration von Hiera, dem Key-Value-Lookup-System von Puppet, das hier zur Klassenzuweisung verwendet wird.
  • openvox_bugs.md: Dokumentiert häufige SSL-Fehler und deren Lösungen.
  • deploy_openvox.yml: Ein Ansible-Playbook, um das gesamte Setup automatisiert auf einem neuen Server zu deployen.

Lokale Inbetriebnahme

Um das Projekt auf einem neuen Rechner (mit installiertem Docker und Docker Compose) zum ersten Mal zu starten:

  1. Projektverzeichnis klonen/kopieren: Stellen Sie sicher, dass Sie das gesamte Projektverzeichnis auf dem neuen Host haben.

  2. CA-Verzeichnis erstellen und Berechtigungen setzen: Der Puppet-Server im Container läuft nicht als root, sondern als Benutzer mit der ID 999. Wir müssen das ca_data-Verzeichnis manuell erstellen und ihm die korrekten Berechtigungen geben. Führen Sie diese Befehle im Hauptverzeichnis des Projekts aus:

    # Verzeichnis für die CA-Daten erstellen
    sudo mkdir -p ./ca_data
    
    # Korrekte Berechtigungen setzen
    sudo chown -R 999:999 ./ca_data
    
  3. Services starten: Starten Sie alle Dienste mit Docker Compose.

    docker compose up -d
    
  4. Status überprüfen: Nach etwa einer Minute sollte der openvox-Container als healthy angezeigt werden.

    docker compose ps
    

Neuen Puppet-Agenten verbinden

Wenn ein neuer Puppet-Agent mit dem Master verbunden werden soll, muss sein Zertifikat signiert werden:

  1. Auf dem neuen Agenten: Führen Sie den Agenten einmal aus. Er wird eine Zertifikatsanfrage (CSR) an den Master senden und mit einem Fehler abbrechen.

    sudo puppet agent -t
    
  2. Auf dem Docker-Host (Master): Listen Sie die ausstehenden Anfragen auf und signieren Sie die des neuen Agenten.

    # Anfragen auflisten
    docker exec -it openvox puppetserver ca list
    
    # Anfrage signieren (ersetzen Sie <agent_hostname>)
    docker exec -it openvox puppetserver ca sign --certname <agent_hostname>
    
  3. Erneut auf dem Agenten: Führen Sie den Agenten erneut aus. Er sollte nun das signierte Zertifikat erhalten und seine Konfiguration anwenden.

    sudo puppet agent -t
    

    Bei SSL-Problemen siehe openvox_bugs.md.


Deployment mit Ansible

Das beiliegende Ansible-Playbook deploy_openvox.yml automatisiert die Inbetriebnahme auf einem neuen Server.

Voraussetzungen:

  • Auf dem Steuer-Rechner: Ansible und die community.docker-Collection (ansible-galaxy collection install community.docker).
  • Auf dem Ziel-Server: Docker und Docker Compose müssen bereits installiert sein. Passwortloser SSH-Zugang vom Steuer-Rechner zum Ziel-Server.

Ausführung:

  1. Playbook verschieben: Stellen Sie sicher, dass das Playbook deploy_openvox.yml eine Ebene über dem openvox-Projektverzeichnis liegt.

  2. Inventory erstellen: Legen Sie eine inventory.ini-Datei an, um Ihre Zielserver zu definieren (siehe die Kommentare im Playbook für ein Beispiel).

  3. Playbook starten:

    # Ersetzen Sie <your_host_group> mit dem Namen aus Ihrer inventory.ini
    ansible-playbook -i inventory.ini deploy_openvox.yml -e "target_host=<your_host_group>"
    

Backup & Portabilität

Durch die Verwendung eines "bind mounts" für das ca_data-Verzeichnis ist das Projekt hochgradig portabel und einfach zu sichern.

  • Backup: Um ein vollständiges Backup zu erstellen, sichern Sie einfach den gesamten openvox-Projektordner. Alle wichtigen Daten (Puppet-Code, CA-Zertifikate) sind darin enthalten.
  • Wiederherstellung/Umzug: Kopieren Sie den gesicherten Ordner auf einen neuen Server, führen Sie die Schritte unter Lokale Inbetriebnahme aus, und Ihr Puppet-Master ist mit allen signierten Zertifikaten wieder online.
Description
No description provided
Readme 63 KiB
Languages
Puppet 100%