- 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
A push-based Ansible controller-in-container setup: an interactive Docker
container (built from debian:trixie-slim, ansible-core 2.20.x) runs the
playbooks from the mounted repository and connects over SSH to Debian hosts
(user: admin, become: true). No agent is pushed except Zabbix Agent 2.
Unverified claims are marked confidence: inferred.
bootstrap is the only composing role: it imports the docker role and
the monitoring role unless skip_docker / skip_monitoring are set.
os-updates and healthcheck are paired at playbook level
(playbooks/os-updates-deb.yml); healthcheck reuses os-updates logging
defaults (healthcheck_log_file derives from os_update_log_dir).
Inventory Model
Three sites: cloudlorean (LAN 192.168.212.0/24, groups debian +
proxmox), home (10.13.37.0/24, groups debian + proxmox),
external (IPv6-only, group debian only).
proxmox group membership drives reboot deferral in os-updates
('proxmox' in group_names); virtualization_type != lxc skips kernel
and reboot logic for LXC containers.
Per-site group_vars/<site>.yml override Zabbix connectivity (server,
API URL, proxy), host groups/templates; group_vars/debian.yml holds
os-update defaults including the hardcoded
os_update_version_codename: "trixie".