# Cluster, Storage und Seal

<p class="callout info">Zielgruppe: Betreuer · Stand: 06.11.2026</p>

Das Lab-OpenBao läuft als Cluster aus drei Knoten mit eingebautem Raft-Storage. Es entsiegelt sich nach einem Neustart selbst (Static-Key-Seal). Diese Seite beschreibt Aufbau, Code-Ablage und Seal.

<p class="callout warning"><strong>Lab-PoC:</strong> Für DEV und Produktion sind Seal-Verfahren und Backup-Konzept noch offen.</p>

## Cluster

- Drei VMs `ob-001-bre1-01..03.dexpro.parts` mit je 2 CPU und 4 GB RAM, Storage per Raft.
- Cluster-Adresse `openbao-lab-bre1.dexpro.parts:8200`, ein DNS-Name mit A-Records auf alle drei Knoten.
- Das Listener-Zertifikat ist das Wildcard-Zertifikat `*.dexpro.parts` (siehe [Listener-Zertifikat](https://docs.squeeze.one/books/openbao/page/listener-zertifikat)).
- Die Knoten finden sich über ihre DNS-Namen, nie über `*.service.consul`.
- Die Knoten sind **nicht** in Consul registriert, weil Consul seine Zertifikate aus OpenBao bekommt. Monitoring läuft über CheckMK.
- Ein Knoten darf ausfallen, ohne dass Lesen und Ausstellen stoppen. Das ist im Lab getestet.

## Code

| Repository | Inhalt |
|---|---|
| `cloud-core-infrastructure/ansible/roles/openbao` | Ansible-Rolle (Installation, Konfiguration, Zertifikats-Reload) |
| `cloud-core-infrastructure/terraform-modules/proxmox/openbao` | Terraform-Modul für die Knoten |
| `cloud-core-infrastructure/bremen1/openbao-servers` | Stack des Lab-Clusters, nur `pre-development` |

Im VM-Modul haben die Knoten eine eigene Rolle (`vault`) und keinen Consul-Agent.

<p class="callout danger">Der Stack <code>openbao-servers</code> bezieht seine Zugänge (Proxmox, DNS, NetBox, CheckMK, Seal-Key) aus Bitwarden und nie aus OpenBao. Sonst ließe sich OpenBao nach einem Ausfall nicht wieder aufbauen. Das gilt für jeden späteren Produktions-, Restore- oder Bootstrap-Stack genauso.</p>

## Seal

- **Static-Key-Seal:** Ein Schlüssel auf jedem Knoten unter `/etc/openbao/seal/` (nur root/openbao lesbar, außerhalb der Raft-Daten). Nach einem Neustart entsiegelt sich der Knoten damit selbst.
- **Recovery-Keys:** fünf Anteile, drei davon genügen. Gesichert in Bitwarden.

<p class="callout warning">Raft-Daten und Seal-Schlüssel liegen gemeinsam im täglichen Proxmox-Backup. Wer Zugriff auf dieses Backup hat (nur Proxmox-Admins), hat beides. Raft-Snapshots selbst enthalten den Schlüssel nicht.</p>

## Weiterführend

- [Erreichbarkeit](https://docs.squeeze.one/books/openbao/page/erreichbarkeit)
- [Snapshot und Restore](https://docs.squeeze.one/books/openbao/page/snapshot-und-restore)
- [OpenBao: Integrated Storage (Raft)](https://openbao.org/docs/concepts/integrated-storage/)
- [OpenBao: Seal/Unseal](https://openbao.org/docs/concepts/seal/)