feat(katalog): Distributionen und Profile als YAML-Daten
Fünf Distributionen (Debian 12/13, Ubuntu 22.04/24.04/26.04) und drei Profile liegen unter catalog/ und werden beim Start abgeglichen. Die Datei ist maßgeblich für den Inhalt, die Datenbank nur für „aktiv“; verschwundene Einträge werden markiert, nicht gelöscht. Unbekannte Schlüssel sind Fehler, damit Tippfehler nicht still verschwinden; eine kaputte Datei wird mit Pfad gemeldet und übersprungen, statt den Start zu verhindern. Prüfsummen-Parser kennt das Debian-, Ubuntu- und BSD-Format; bei mehreren LXC-Templates gewinnt die höchste Version. Closes #004 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
# Grundausstattung für jeden Gast. Platzhalter: {{ var.<name> }} 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.
|
||||
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: [chrony, sudo, curl, ca-certificates]
|
||||
- service: { name: chrony, enable: true, start: true }
|
||||
- unattended_upgrades: true
|
||||
- ssh_harden: { password_auth: false, root_login: false }
|
||||
- packages: [fail2ban]
|
||||
if: fail2ban
|
||||
- service: { name: fail2ban, enable: true, start: true }
|
||||
if: fail2ban
|
||||
@@ -0,0 +1,22 @@
|
||||
# Docker CE aus dem offiziellen Repository nach docs.docker.com (geprüft 2026-10-12):
|
||||
# Schlüssel unter /etc/apt/keyrings/docker.asc, Quelle im deb822-Format.
|
||||
id: docker
|
||||
name: Docker CE
|
||||
description: Docker Engine mit compose- und buildx-Plugin aus dem offiziellen Repository
|
||||
requires: [base]
|
||||
variables:
|
||||
- { name: benutzer_in_gruppe, label: Benutzer in die Gruppe docker aufnehmen, type: boolean, default: true, help: Erlaubt docker ohne sudo – entspricht root-Rechten. }
|
||||
lxc:
|
||||
features: { nesting: true }
|
||||
families:
|
||||
debian:
|
||||
- repo:
|
||||
name: docker
|
||||
key_url: "https://download.docker.com/linux/{{ os.id }}/gpg"
|
||||
uris: "https://download.docker.com/linux/{{ os.id }}"
|
||||
suites: "{{ os.codename }}"
|
||||
components: stable
|
||||
- packages: [docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, docker-compose-plugin]
|
||||
- service: { name: docker, enable: true, start: true }
|
||||
- run: usermod -aG docker {{ guest.user }}
|
||||
if: benutzer_in_gruppe
|
||||
@@ -0,0 +1,21 @@
|
||||
# Zabbix Agent 2 aus dem offiziellen Repository, 7.0 LTS (8.0 hatte am 2026-10-12 noch keine
|
||||
# Agent-Pakete). Das Release-Paket legt Repository und Schlüssel an.
|
||||
id: zabbix-agent
|
||||
name: Zabbix Agent 2
|
||||
description: Zabbix Agent 2 (7.0 LTS), Server und ServerActive als Variablen
|
||||
requires: [base]
|
||||
variables:
|
||||
- { name: server, label: Zabbix-Server, required: true, help: "Adresse(n) des Servers, kommagetrennt" }
|
||||
- { name: server_active, label: ServerActive, help: Leer lassen = wie Zabbix-Server }
|
||||
families:
|
||||
debian:
|
||||
- repo_package: "https://repo.zabbix.com/zabbix/7.0/{{ os.id }}/pool/main/z/zabbix-release/zabbix-release_latest_7.0+{{ os.id }}{{ os.version_id }}_all.deb"
|
||||
- packages: [zabbix-agent2]
|
||||
- file:
|
||||
path: /etc/zabbix/zabbix_agent2.d/proxdeploy.conf
|
||||
content: |
|
||||
# Von ProxDeploy angelegt
|
||||
Server={{ var.server }}
|
||||
ServerActive={{ var.server_active ?? var.server }}
|
||||
Hostname={{ guest.name }}
|
||||
- service: { name: zabbix-agent2, enable: true, start: true, restart: true }
|
||||
Reference in New Issue
Block a user