Ansible
Ansible provisioniert den Janus-Server automatisch: Benutzer, Härtung und K3s-Installation.
Ansible-Workflow
Section titled “Ansible-Workflow”graph TB
subgraph Ansible ["Ansible (lokal)"]
Playbook["site.yml"]
Users["users.yml"]
Hardening["hardening.yml"]
K3s["k3s.yml"]
end
subgraph Server ["Janus Server"]
OS["Debian 13"]
Firewall["UFW"]
F2B["fail2ban"]
SSH["sshd"]
K3sCluster["K3s Cluster"]
end
Playbook --> Users
Playbook --> Hardening
Playbook --> K3s
Users -->|"Benutzer anlegen"| SSH
Users -->|"SSH Keys"| SSH
Hardening -->|"Firewall-Regeln"| Firewall
Hardening -->|"Jail-Konfiguration"| F2B
Hardening -->|"SSH-Härtung"| SSH
K3s -->|"K3s installieren"| OS
K3s -->|"Helm Charts"| K3sCluster
Repository-Struktur
Section titled “Repository-Struktur”ansible/janus/├── ansible.cfg├── justfile├── requirements.yml├── inventory/│ └── hosts.ini├── group_vars/│ └── all.yml└── playbooks/ ├── site.yml ├── users.yml ├── hardening.yml └── k3s.ymlPlaybooks
Section titled “Playbooks”site.yml
Section titled “site.yml”Haupt-Playbook, das alle Teile importiert:
- name: Provision janus.ciss.digital hosts: servers become: true handlers: - name: Restart sshd ansible.builtin.service: name: sshd state: restarted - name: Restart fail2ban ansible.builtin.service: name: fail2ban state: restarted tasks: - import_tasks: users.yml # Tag: users - import_tasks: hardening.yml # Tag: hardening - import_tasks: k3s.yml # Tag: k3susers.yml
Section titled “users.yml”- Erstellt Service-Benutzer
services(system,containerd-Gruppe) - Erstellt Admin-Benutzer (
sudo,containerd-Gruppen) - Deployed SSH-Keys für Admins,
rootundservices - Konfiguriert passwortloses sudo
- Kopiert Kubeconfig für
services-Benutzer - Systemd-Override: containerd-Socket-Gruppenzugriff
Teile separat ausführen:
# Nur Benutzerjust provision --tags users
# Nur Härtungjust provision --tags hardening
# Nur K3sjust provision --tags k3sVoraussetzungen
Section titled “Voraussetzungen”- Just Task Runner
- Ansible mit Collections (
just requirements) - SSH-Key-Auth zu
root@janus.ciss.digital
Just-Targets
Section titled “Just-Targets”| Target | Beschreibung |
|---|---|
just requirements | Ansible Collections installieren |
just provision | Komplette Provisionierung |
just check | Dry-run mit Diff |
just ping | Verbindung prüfen |
just status | K3s Nodes und Pods anzeigen |
just lint | Playbooks linten |
Variablen
Section titled “Variablen”Alle Variablen in group_vars/all.yml:
| Variable | Beschreibung | Beispiel |
|---|---|---|
service_user | System-Service-Benutzer | services |
admin_users | Admin-Benutzer mit SSH-Keys | aw, dn, rst |
timezone | Server-Zeitzone | Europe/Berlin |
ufw_allowed_ports | Offene TCP-Ports | 80, 443 |
k3s_channel | K3s-Release-Channel | stable |
cert_manager_email | E-Mail für Let’s Encrypt | a.willner@ciss.de |