Files
ansible-role-act-runner/.kiro/steering/ansible-best-practices.md
Markus Pesch 82250f851d
Some checks failed
Lint Markdown files / markdown-lint (push) Failing after 11s
Ansible Linter / ansible-lint (push) Successful in 18s
fix: pass token via cli arg
2026-01-08 18:21:32 +01:00

81 lines
2.0 KiB
Markdown

---
inclusion: always
---
# Ansible Best Practices für Act Runner Role
## Allgemeine Prinzipien
### Idempotenz
- Alle Tasks müssen idempotent sein - mehrfache Ausführung führt zum gleichen Ergebnis
- Verwende `changed_when` und `failed_when` für präzise Zustandskontrolle
- Nutze `creates` Parameter bei command/shell Tasks wo möglich
### Variablen und Namenskonventionen
- Alle Variablen beginnen mit `act_runner_` als Präfix
- Verwende aussagekräftige Namen: `act_runner_config_file` statt `config_file`
- Dokumentiere alle Variablen mit `## @param` Kommentaren
- Setze sinnvolle Defaults in `defaults/main.yaml`
### Plattform-Unterstützung
- Verwende OS-spezifische Variablen in `vars/` Verzeichnis
- Nutze `ansible_facts` für Plattform-Erkennung
- Teste auf allen unterstützten Distributionen
## Task-Organisation
### Struktur
```yaml
- name: Beschreibender Task-Name
ansible.builtin.module_name:
parameter: value
register: variable_name
when: condition
notify: handler_name
```
### Fehlerbehandlung
- Verwende `failed_when` für spezifische Fehlerbedingungen
- Registriere wichtige Outputs mit `register`
- Nutze `assert` für Eingabevalidierung
### Handler
- Ein Handler pro Service-Aktion
- Verwende `systemd` Modul für Service-Management
- Handler sollten idempotent sein
## Sicherheit
### Berechtigungen
- Setze explizite Dateiberechtigungen (`mode`)
- Verwende dedizierte Benutzer/Gruppen
- Minimiere privilegierte Operationen
### Secrets
- Keine Secrets in Defaults oder Variablen
- Verwende Ansible Vault für sensible Daten
- Dokumentiere erforderliche Secrets klar
## Testing und Qualität
### Lint-Regeln
- Befolge `.ansible-lint` Konfiguration für Ansible Dateien.
- Verwende FQCN (Fully Qualified Collection Names)
- Keine deprecated Module verwenden
- Befolge `.markdownliny.yaml` Konfiguration für Markdown Dateien.
### Dokumentation
- Jeder Task braucht einen aussagekräftigen Namen
- Dokumentiere komplexe Logik mit Kommentaren
- README automatisch aus Variablen generieren