Skip to content

Ansible

Ansible provisioniert den Janus-Server automatisch: Benutzer, Härtung und K3s-Installation.

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
ansible/janus/
├── ansible.cfg
├── justfile
├── requirements.yml
├── inventory/
│ └── hosts.ini
├── group_vars/
│ └── all.yml
└── playbooks/
├── site.yml
├── users.yml
├── hardening.yml
└── k3s.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: k3s
  • Erstellt Service-Benutzer services (system, containerd-Gruppe)
  • Erstellt Admin-Benutzer (sudo, containerd-Gruppen)
  • Deployed SSH-Keys für Admins, root und services
  • Konfiguriert passwortloses sudo
  • Kopiert Kubeconfig für services-Benutzer
  • Systemd-Override: containerd-Socket-Gruppenzugriff

Teile separat ausführen:

Terminal window
# Nur Benutzer
just provision --tags users
# Nur Härtung
just provision --tags hardening
# Nur K3s
just provision --tags k3s
  • Just Task Runner
  • Ansible mit Collections (just requirements)
  • SSH-Key-Auth zu root@janus.ciss.digital
TargetBeschreibung
just requirementsAnsible Collections installieren
just provisionKomplette Provisionierung
just checkDry-run mit Diff
just pingVerbindung prüfen
just statusK3s Nodes und Pods anzeigen
just lintPlaybooks linten

Alle Variablen in group_vars/all.yml:

VariableBeschreibungBeispiel
service_userSystem-Service-Benutzerservices
admin_usersAdmin-Benutzer mit SSH-Keysaw, dn, rst
timezoneServer-ZeitzoneEurope/Berlin
ufw_allowed_portsOffene TCP-Ports80, 443
k3s_channelK3s-Release-Channelstable
cert_manager_emailE-Mail für Let’s Encrypta.willner@ciss.de