anpassen von git ignore
This commit is contained in:
60
README.md
60
README.md
@@ -17,6 +17,8 @@ Die Konfiguration wurde optimiert, um portabel und einfach auf neuen Servern aus
|
|||||||
## Verzeichnisstruktur
|
## Verzeichnisstruktur
|
||||||
|
|
||||||
- `docker-compose.yml`: Die zentrale Datei, die alle Docker-Services, Volumes und Netzwerke definiert.
|
- `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.
|
- `code/`: Enthält den Puppet-Code (Manifeste, Module etc.), der von den Agenten angewendet wird.
|
||||||
- `config/`: Beinhaltet Konfigurationsdateien für die verschiedenen Dienste.
|
- `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.
|
- `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:**
|
1. **Projektverzeichnis klonen/kopieren:**
|
||||||
Stellen Sie sicher, dass Sie das gesamte Projektverzeichnis auf dem neuen Host haben.
|
Stellen Sie sicher, dass Sie das gesamte Projektverzeichnis auf dem neuen Host haben.
|
||||||
|
|
||||||
2. **CA-Verzeichnis erstellen und Berechtigungen setzen:**
|
2. **`.env`-Datei erstellen:**
|
||||||
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:
|
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
|
```bash
|
||||||
# Verzeichnis für die CA-Daten erstellen
|
# Verzeichnis für die CA-Daten erstellen
|
||||||
sudo mkdir -p ./ca_data
|
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
|
sudo chown -R 999:999 ./ca_data
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Services starten:**
|
4. **Services starten:**
|
||||||
Starten Sie alle Dienste mit Docker Compose.
|
Starten Sie alle Dienste mit Docker Compose. Die `.env`-Datei wird automatisch gelesen.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
4. **Status überprüfen:**
|
5. **Status überprüfen:**
|
||||||
Nach etwa einer Minute sollte der `openvox`-Container als `healthy` angezeigt werden.
|
Nach etwa einer Minute sollte der `openvox`-Container als `healthy` angezeigt werden.
|
||||||
```bash
|
```bash
|
||||||
docker compose ps
|
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.
|
Das beiliegende Ansible-Playbook `deploy_openvox.yml` automatisiert die Inbetriebnahme auf einem neuen Server.
|
||||||
|
|
||||||
**Voraussetzungen:**
|
**Voraussetzungen:**
|
||||||
- Auf dem **Steuer-Rechner**: Ansible und die `community.docker`-Collection (`ansible-galaxy collection install community.docker`).
|
- 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.
|
- 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:**
|
**Ausführung:**
|
||||||
|
|
||||||
1. **Playbook verschieben:** Stellen Sie sicher, dass das Playbook `deploy_openvox.yml` eine Ebene *über* dem `openvox`-Projektverzeichnis liegt.
|
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:
|
||||||
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:**
|
|
||||||
```bash
|
```bash
|
||||||
# Ersetzen Sie <your_host_group> mit dem Namen aus Ihrer inventory.ini
|
# Im Verzeichnis /home/jonnybravo/.docker/openvox/ ausführen
|
||||||
ansible-playbook -i inventory.ini deploy_openvox.yml -e "target_host=<your_host_group>"
|
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
|
## Backup & Portabilität
|
||||||
|
|||||||
Reference in New Issue
Block a user