# Arbeitsweise

# Testen ohne Risiko

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

Tests sollen Fehler finden, nicht verursachen. Deshalb laufen sie dort, wo nichts kaputtgehen kann.

## Regeln

- **Der eigene Rechner ist kein Testobjekt.** Keine Playbooks mit `hosts: localhost` und echten Modulen (z. B. `docker_prune`, `file state=absent`, `systemd`) gegen den eigenen Rechner oder dessen Docker/WSL.
- **Offline testen:** Ansible mit `--check`, Stubs und Mocks oder ein **Wegwerf-Container** ohne Netz.
- **Skripte zuerst in einer Wegwerf-Instanz,** z. B. ein OpenBao-Container für OpenBao-Skripte.
- **Echte Umgebungen** nur über die Pipeline und nur im Lab. Riskante Tests nacheinander, nicht parallel.

<p class="callout danger">Ein Test mit echten Modulen gegen eine falsche Zielgruppe löscht echte Daten. Vor jedem Lauf prüfen, gegen welche Hosts er geht.</p>

## Weiterführend

- [Freigaben](https://docs.squeeze.one/books/developer-good-practice/page/freigaben)
- [Lab, DEV und Produktion](https://docs.squeeze.one/books/developer-good-practice/page/lab-dev-und-produktion)

# Freigaben

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

Manche Aktionen lassen sich nicht zurücknehmen. Für sie gilt: erst zeigen, was passiert, dann ausdrücklich freigeben lassen, dann ausführen.

## Was eine Freigabe braucht

- Deployments und Merges auf Stage-Branches (siehe [Merge heißt Deploy](https://docs.squeeze.one/books/developer-good-practice/page/merge-heisst-deploy))
- Löschen und Abreißen (Ressourcen, Branches, Secrets, Logs)
- Rotationen von Zugängen
- Force-Push, Rebase und Reset auf geteilten Branches
- alles in Produktion

## Wie eine Freigabe aussieht

1. **Konkret:** was genau, wo (Repo, Branch, Stage, Host) und mit welcher Wirkung (Plan, Liste der betroffenen Objekte).
2. **Ausdrücklich:** Ein „klingt gut“ zu einem Plan ist keine Freigabe zum Mergen. Eine Freigabe für den Merge deckt keine anschließende Promotion.
3. **Einmalig:** Eine Freigabe gilt für die gezeigte Aktion, nicht für ähnliche später.

## Stolperfallen

<p class="callout warning">Löschen nur über eine eindeutige ID, nie über eine Namenssuche. Gleichnamige Objekte in anderen Umgebungen werden sonst mitgelöscht.</p>

- Ein „nur hinzufügender“ Plan kann durch Drift trotzdem Replaces enthalten. Den ganzen Plan ansehen.

## Weiterführend

- [Testen ohne Risiko](https://docs.squeeze.one/books/developer-good-practice/page/testen-ohne-risiko)