rename dmc12 inventory to cloudlorean and vault admin_password

- replace inventory/dmc12.yml with cloudlorean.yml (+ group_vars) and update
  all README/AGENTS call examples and the inventory table
- move admin_password hash into encrypted vault.yml; remove plaintext copies
  from roles/bootstrap/defaults and group_vars/external.yml
- bootstrap.yml loads vault.yml via vars_files (same pattern as monitoring)
- monitoring: PSK config/registration updates, docker role defaults,
  os-updates logging/reboot refinements, ansible.cfg/execute.sh tweaks
- add .project-wiki knowledge base and .github agent instructions
This commit is contained in:
DerLinkman
2026-09-09 14:14:18 +02:00
parent a31751af1d
commit 30f3e9a4c6
96 changed files with 3602 additions and 138 deletions
+18
View File
@@ -0,0 +1,18 @@
# Traceability
This section connects requirements, changes, decisions, technical documentation, and source paths.
## When To Read
- Analyze implementation coverage or change impact.
## Key Files
- [Requirement map](./requirement-map.md)
- [Requirement evidence](./requirement-evidence.yml)
- [Change impact map](./change-impact-map.md)
- [Code map](./code-map.md)
## Placeholders Or Stale Areas
- `change-impact-map.md` still placeholder (no change requests yet).
@@ -0,0 +1,3 @@
# Change Impact Map
No change impact traceability has been captured yet.
+20
View File
@@ -0,0 +1,20 @@
# Code Traceability Map
Connects wiki documents to source paths. Created during the 2026-09-09 scan.
| Wiki Document | Source Paths | Notes |
| --- | --- | --- |
| [MOD-001 Bootstrap](../technical/modules/MOD-001-bootstrap-role.md) | `bootstrap.yml`, `roles/bootstrap/` | Composes docker + monitoring roles |
| [MOD-002 Docker](../technical/modules/MOD-002-docker-role.md) | `playbooks/docker.yml`, `roles/docker/` | Official Docker apt repo |
| [MOD-003 Monitoring](../technical/modules/MOD-003-monitoring-role.md) | `playbooks/monitoring.yml`, `roles/monitoring/`, `vault.yml` | Zabbix Agent 2, PSK, API registration |
| [MOD-004 OS Updates](../technical/modules/MOD-004-os-updates-role.md) | `playbooks/os-updates-deb.yml`, `roles/os-updates/` | Mirror switch, reboot, logging |
| [MOD-005 Healthcheck](../technical/modules/MOD-005-healthcheck-role.md) | `playbooks/os-updates-deb.yml`, `roles/healthcheck/` | Container quality gate |
| [MOD-006 Hawser](../technical/modules/MOD-006-hawser-role.md) | `playbooks/upgrade-hawser.yml`, `roles/hawser/` | Compose stack update |
| [MOD-007 Manage SSH Keys](../technical/modules/MOD-007-manage-ssh-keys-role.md) | `playbooks/hardening/manage-ssh-keys.yml`, `roles/manage-ssh-keys/` | No Debian guard (gap) |
| [TECH-DEPLOYMENT](../technical/deployment.md) | `execute.sh`, `docker/`, `ansible.cfg` | Runtime environment |
| [TECH-SECURITY](../technical/security.md) | `vault.yml`, `roles/*/defaults/`, `ansible.cfg`, `roles/monitoring/tasks/configure-psk.yml` | Secrets, SSH, PSK |
| [TECH-INTEGRATIONS-ZABBIX](../technical/integrations/zabbix.md) | `roles/monitoring/`, `inventory/group_vars/` | Zabbix + external services |
| [NFR-003](../requirements/non-functional/operational-policies.md#nfr-003) | `roles/os-updates/tasks/logging_*.yml`, `roles/healthcheck/tasks/main.yml` | Update log audit trail |
| [NFR-006](../requirements/non-functional/operational-policies.md#nfr-006) | `roles/os-updates/tasks/reboot.yml`, `roles/bootstrap/tasks/configure-sysctl.yml` | LXC skips |
| [ALERT-20260909-001](../alerts/ALERT-20260909-001.md) | `roles/bootstrap/defaults/main.yml`, `inventory/group_vars/external.yml`, `bootstrap.yml`, `vault.yml` | Plaintext admin hash - resolved (vaulted) |
| [ALERT-20260909-002](../alerts/ALERT-20260909-002.md) | `inventory/cloudlorean.yml`, `README.md`, `AGENTS.md`, `roles/*/README.md` | Rename committed, stale docs fixed |
@@ -0,0 +1,129 @@
version: 1
updated: '2026-09-09'
records:
REQ-001:
requirement: REQ-001
evidence:
- source: README.md
locator: "Playbooks table: 'bootstrap.yml | bootstrap | Vollständige Ersteinrichtung eines Debian-Hosts'"
type: doc
- source: roles/bootstrap/tasks/main.yml
locator: "import_tasks list + import_role docker/monitoring"
type: code
confidence: confirmed
REQ-002:
requirement: REQ-002
evidence:
- source: README.md
locator: "Playbooks table: 'playbooks/docker.yml | docker | Docker Engine installieren'"
type: doc
- source: roles/docker/defaults/main.yml
locator: "docker_mirror, docker_packages"
type: code
confidence: confirmed
REQ-003:
requirement: REQ-003
evidence:
- source: README.md
locator: "Playbooks table: 'playbooks/monitoring.yml | monitoring | Zabbix Agent 2 installieren & registrieren'"
type: doc
- source: roles/monitoring/tasks/register-host.yml
locator: "community.zabbix.zabbix_host registration"
type: code
confidence: confirmed
REQ-004:
requirement: REQ-004
evidence:
- source: README.md
locator: "Playbooks table: 'playbooks/os-updates-deb.yml | os-updates, healthcheck | Pakete aktualisieren + Healthcheck'"
type: doc
- source: playbooks/os-updates-deb.yml
locator: "include_role os-updates + healthcheck"
type: code
confidence: confirmed
REQ-005:
requirement: REQ-005
evidence:
- source: README.md
locator: "Playbooks table: 'playbooks/upgrade-hawser.yml | hawser | Hawser-Stack aktualisieren'"
type: doc
- source: roles/hawser/tasks/update-stack.yml
locator: "docker_compose_v2 pull: always"
type: code
confidence: confirmed
REQ-006:
requirement: REQ-006
evidence:
- source: README.md
locator: "Playbooks table: 'playbooks/hardening/manage-ssh-keys.yml | manage-ssh-keys | SSH-Schlüssel hartieren'"
type: doc
- source: roles/manage-ssh-keys/tasks/main.yml
locator: "validate/add/remove key subtasks"
type: code
confidence: confirmed
NFR-001:
requirement: NFR-001
evidence:
- source: README.md
locator: "Voraussetzungen: 'Ziel-Hosts: Debian (alle Playbooks prüfen os_family == \"Debian\")'"
type: doc
- source: bootstrap.yml
locator: "fail when os_family != Debian"
type: code
- source: playbooks/hardening/manage-ssh-keys.yml
locator: "no os_family guard (deviation)"
type: code
confidence: confirmed
NFR-002:
requirement: NFR-002
evidence:
- source: README.md
locator: "Secrets & Vault + Beitragen rule 3"
type: doc
- source: roles/bootstrap/defaults/main.yml
locator: "comment pointing to vault.yml (violation resolved, ALERT-20260909-001)"
type: code
- source: bootstrap.yml
locator: "vars_files: vault.yml (vaulted admin_password)"
type: code
confidence: confirmed
NFR-003:
requirement: NFR-003
evidence:
- source: README.md
locator: "Logging section: logs/<inventory>/<hostname>/update.log"
type: doc
- source: roles/os-updates/defaults/main.yml
locator: "os_update_log_file template"
type: code
confidence: confirmed
NFR-004:
requirement: NFR-004
evidence:
- source: README.md
locator: "Docker-Ausführungsumgebung section"
type: doc
- source: execute.sh
locator: "docker run with repo mount /ansible"
type: code
confidence: confirmed
NFR-005:
requirement: NFR-005
evidence:
- source: AGENTS.md
locator: "Dokumentationspflicht mapping table"
type: doc
- source: README.md
locator: "Beitragen rule 2"
type: doc
confidence: confirmed
NFR-006:
requirement: NFR-006
evidence:
- source: AGENTS.md
locator: "OS-Unterstützung: LXC sysctl/reboot skip"
type: doc
- source: roles/os-updates/tasks/reboot.yml
locator: "when: ansible_facts['virtualization_type'] != 'lxc'"
type: code
confidence: confirmed
@@ -0,0 +1,26 @@
# Requirement Traceability Map
Requirement records → implementing source paths → evidence. Created during
the 2026-09-09 scan; detailed evidence in
[requirement-evidence.yml](./requirement-evidence.yml).
| Requirement | Statement (short) | Implements / Verified By | Evidence |
| --- | --- | --- | --- |
| [REQ-001](../requirements/functional/host-lifecycle-operations.md#req-001) | Initial provisioning via bootstrap | `bootstrap.yml`, `roles/bootstrap/` | README playbook table |
| [REQ-002](../requirements/functional/host-lifecycle-operations.md#req-002) | Docker Engine install | `playbooks/docker.yml`, `roles/docker/` | README playbook table |
| [REQ-003](../requirements/functional/host-lifecycle-operations.md#req-003) | Zabbix Agent 2 install + register | `playbooks/monitoring.yml`, `roles/monitoring/` | README playbook table |
| [REQ-004](../requirements/functional/host-lifecycle-operations.md#req-004) | Package updates + healthcheck | `playbooks/os-updates-deb.yml`, `roles/os-updates/`, `roles/healthcheck/` | README playbook table |
| [REQ-005](../requirements/functional/host-lifecycle-operations.md#req-005) | Hawser stack update | `playbooks/upgrade-hawser.yml`, `roles/hawser/` | README playbook table |
| [REQ-006](../requirements/functional/host-lifecycle-operations.md#req-006) | SSH key hardening | `playbooks/hardening/manage-ssh-keys.yml`, `roles/manage-ssh-keys/` | README playbook table |
| [NFR-001](../requirements/non-functional/operational-policies.md#nfr-001) | Debian-only guard | `bootstrap.yml`, `playbooks/*.yml` (exception: manage-ssh-keys.yml) | README prerequisites |
| [NFR-002](../requirements/non-functional/operational-policies.md#nfr-002) | Secrets only in vault | `vault.yml`, `bootstrap.yml` + `playbooks/monitoring.yml` (`vars_files`) | README secrets section |
| [NFR-003](../requirements/non-functional/operational-policies.md#nfr-003) | Per-host update audit log | `roles/os-updates/tasks/logging_*.yml`, `roles/healthcheck/tasks/main.yml` | README logging section |
| [NFR-004](../requirements/non-functional/operational-policies.md#nfr-004) | Docker-based execution | `execute.sh`, `docker/Dockerfile`, `docker/requirements.yml` | README docker section |
| [NFR-005](../requirements/non-functional/operational-policies.md#nfr-005) | Documentation duty | `roles/*/README.md`, root `README.md` | README contributing, AGENTS.md |
| [NFR-006](../requirements/non-functional/operational-policies.md#nfr-006) | LXC-aware sysctl/reboot | `roles/os-updates/tasks/reboot.yml`, `roles/bootstrap/tasks/configure-sysctl.yml` | AGENTS.md OS support |
Gaps and deviations:
- NFR-001: `playbooks/hardening/manage-ssh-keys.yml` has no Debian guard.
- NFR-002: resolved 2026-09-09 - `admin_password` moved to vault.yml
(was ALERT-20260909-001).