# Grundausstattung für jeden Gast. Platzhalter: {{ var. }} aus den Variablen unten, # {{ os.id }}, {{ os.version_id }}, {{ os.codename }} aus der Distribution, # {{ guest.name }}, {{ guest.user }} aus dem Deployment. `a ?? b` nimmt b, wenn a leer ist. # Bedingungen: `if: `, dazu fest `if: vm` / `if: lxc`. id: base name: Basis description: Updates, Guest-Agent, Zeitzone, Locale, Tastatur, automatische Sicherheitsupdates, Zeitsync, SSH-Härtung variables: - { name: zeitzone, label: Zeitzone, default: Europe/Berlin } - { name: locale, label: Locale, default: de_DE.UTF-8 } - { name: tastatur, label: Tastaturbelegung, default: de } - { name: fail2ban, label: fail2ban installieren, type: boolean, default: false, help: Sperrt Adressen nach wiederholten SSH-Fehlversuchen. } families: debian: - update: true - guest_agent: true - timezone: "{{ var.zeitzone }}" - locale: "{{ var.locale }}" - keyboard: "{{ var.tastatur }}" - packages: [sudo, curl, ca-certificates] # Zeitsync nur in VMs: ein unprivilegierter Container darf die Uhr nicht stellen, er nimmt die des Hosts. - packages: [chrony] if: vm - service: { name: chrony, enable: true, start: true } if: vm - unattended_upgrades: true - ssh_harden: { password_auth: false, root_login: false } - packages: [fail2ban] if: fail2ban - service: { name: fail2ban, enable: true, start: true } if: fail2ban