From 9959c52f942e0795285f6d3874742eaf9ea32a41 Mon Sep 17 00:00:00 2001 From: jonnybravo Date: Thu, 29 Jan 2026 18:47:27 +0100 Subject: [PATCH] anpassen von git ignore --- README.md | 60 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 30897fb..07e8a40 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ Die Konfiguration wurde optimiert, um portabel und einfach auf neuen Servern aus ## Verzeichnisstruktur - `docker-compose.yml`: Die zentrale Datei, die alle Docker-Services, Volumes und Netzwerke definiert. +- `.env.example`: Eine Vorlagedatei, die zeigt, welche Umgebungsvariablen (z.B. Passwörter) in einer `.env`-Datei benötigt werden. +- `.gitignore`: Definiert Dateien und Verzeichnisse, die von Git ignoriert werden sollen (z.B. `ca_data/`, `.env`). - `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. @@ -33,25 +35,34 @@ Um das Projekt auf einem neuen Rechner (mit installiertem Docker und Docker Comp 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: +2. **`.env`-Datei erstellen:** + Kopieren Sie die Vorlagedatei und tragen Sie Ihr sicheres Passwort ein. + ```bash + cp .env.example .env + # Bearbeiten Sie nun die .env-Datei und setzen Sie das Passwort. + ``` +3. **CA-Verzeichnis erstellen und Berechtigungen setzen (Der "CA-Fehler")** + Der Puppet-Server im Container läuft aus Sicherheitsgründen nicht als `root`, sondern als Benutzer `puppet` mit der User-ID (UID) `999`. Wenn Docker ein Verzeichnis für einen "bind mount" verwendet, gehört dieses standardmäßig `root`. Dies führt zu einem "Permission denied"-Fehler, da der `puppet`-Benutzer nicht in das `root`-eigene Verzeichnis schreiben kann. + + Um dies zu beheben, müssen wir das `ca_data`-Verzeichnis manuell erstellen und ihm die korrekten Berechtigungen geben, *bevor* der Container gestartet wird. + + Führen Sie diese Befehle im Hauptverzeichnis des Projekts aus: ```bash # Verzeichnis für die CA-Daten erstellen sudo mkdir -p ./ca_data - # Korrekte Berechtigungen setzen + # Korrekte Berechtigungen für den 'puppet'-Benutzer (UID 999) setzen sudo chown -R 999:999 ./ca_data ``` -3. **Services starten:** - Starten Sie alle Dienste mit Docker Compose. - +4. **Services starten:** + Starten Sie alle Dienste mit Docker Compose. Die `.env`-Datei wird automatisch gelesen. ```bash docker compose up -d ``` -4. **Status überprüfen:** +5. **Status überprüfen:** Nach etwa einer Minute sollte der `openvox`-Container als `healthy` angezeigt werden. ```bash docker compose ps @@ -93,21 +104,38 @@ Wenn ein neuer Puppet-Agent mit dem Master verbunden werden soll, muss sein Zert 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. +- Auf dem **Steuer-Rechner**: Ansible und die `community.docker`-Collection. +- Auf dem **Ziel-Server**: Docker und Docker Compose müssen bereits installiert sein. Passwortloser SSH-Zugang vom Steuer-Rechner zum Ziel-Server (z.B. via SSH-Key). **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:** +1. **Playbook verschieben:** + Das Playbook ist so geschrieben, dass es den `openvox`-Ordner als Unterverzeichnis erwartet. Verschieben Sie `deploy_openvox.yml` eine Ebene nach oben: ```bash - # Ersetzen Sie mit dem Namen aus Ihrer inventory.ini - ansible-playbook -i inventory.ini deploy_openvox.yml -e "target_host=" + # Im Verzeichnis /home/jonnybravo/.docker/openvox/ ausführen + mv deploy_openvox.yml ../ ``` +2. **Voraussetzungen installieren (Steuer-Rechner):** + ```bash + ansible-galaxy collection install community.docker + ``` + +3. **Inventory erstellen (Steuer-Rechner):** + Erstellen Sie eine Datei `inventory.ini` im selben Verzeichnis wie das Playbook (`/home/jonnybravo/.docker/`). Passen Sie IP und Benutzer an. + *Beispiel `inventory.ini`:* + ```ini + [puppet_masters] + server1 ansible_host=192.168.1.100 ansible_user=jonnybravo + ``` + +4. **Playbook starten (Steuer-Rechner):** + Führen Sie das Playbook vom Verzeichnis `/home/jonnybravo/.docker/` aus. Übergeben Sie den Namen der Ziel-Gruppe (`puppet_masters`) an die Variable `target_host`. + ```bash + ansible-playbook -i inventory.ini deploy_openvox.yml -e "target_host=puppet_masters" + ``` + Das Playbook kopiert den `openvox`-Ordner nach `/opt/openvox` auf dem Zielserver, setzt die Berechtigungen und startet die Container. + --- ## Backup & Portabilität