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,22 @@
|
||||
# Geprüft am 2026-10-12: Image, SHA512SUMS (Zeilenformat "<hash> <datei>") und LXC-Template
|
||||
# existieren. Der Guest-Agent ist im Image nicht enthalten – er wird beim Template-Bau eingebaut.
|
||||
id: debian-12
|
||||
name: Debian 12 „Bookworm“
|
||||
family: debian
|
||||
os:
|
||||
id: debian
|
||||
version_id: "12"
|
||||
codename: bookworm
|
||||
arch: amd64
|
||||
vm:
|
||||
image_url: https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2
|
||||
checksum_url: https://cloud.debian.org/images/cloud/bookworm/latest/SHA512SUMS
|
||||
checksum_type: sha512
|
||||
format: qcow2
|
||||
default_user: debian
|
||||
guest_agent_preinstalled: false
|
||||
bios: ovmf
|
||||
min_disk_gb: 4
|
||||
lxc:
|
||||
template_pattern: "debian-12-standard_*_amd64.tar.zst" # aus pveam available
|
||||
ostype: debian
|
||||
@@ -0,0 +1,22 @@
|
||||
# Geprüft am 2026-10-12: Image, SHA512SUMS (Zeilenformat "<hash> <datei>") und LXC-Template
|
||||
# existieren. Der Guest-Agent ist im Image nicht enthalten – er wird beim Template-Bau eingebaut.
|
||||
id: debian-13
|
||||
name: Debian 13 „Trixie“
|
||||
family: debian
|
||||
os:
|
||||
id: debian
|
||||
version_id: "13"
|
||||
codename: trixie
|
||||
arch: amd64
|
||||
vm:
|
||||
image_url: https://cloud.debian.org/images/cloud/trixie/latest/debian-13-genericcloud-amd64.qcow2
|
||||
checksum_url: https://cloud.debian.org/images/cloud/trixie/latest/SHA512SUMS
|
||||
checksum_type: sha512
|
||||
format: qcow2
|
||||
default_user: debian
|
||||
guest_agent_preinstalled: false
|
||||
bios: ovmf
|
||||
min_disk_gb: 4
|
||||
lxc:
|
||||
template_pattern: "debian-13-standard_*_amd64.tar.zst" # aus pveam available
|
||||
ostype: debian
|
||||
@@ -0,0 +1,22 @@
|
||||
# Geprüft am 2026-10-12: Image (.img ist qcow2), SHA256SUMS (Zeilenformat "<hash> *<datei>")
|
||||
# und LXC-Template existieren. Guest-Agent nicht im Image – wird beim Template-Bau eingebaut.
|
||||
id: ubuntu-22.04
|
||||
name: Ubuntu 22.04 LTS „Jammy Jellyfish“
|
||||
family: debian
|
||||
os:
|
||||
id: ubuntu
|
||||
version_id: "22.04"
|
||||
codename: jammy
|
||||
arch: amd64
|
||||
vm:
|
||||
image_url: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
|
||||
checksum_url: https://cloud-images.ubuntu.com/jammy/current/SHA256SUMS
|
||||
checksum_type: sha256
|
||||
format: qcow2
|
||||
default_user: ubuntu
|
||||
guest_agent_preinstalled: false
|
||||
bios: ovmf
|
||||
min_disk_gb: 4
|
||||
lxc:
|
||||
template_pattern: "ubuntu-22.04-standard_*_amd64.tar.zst"
|
||||
ostype: ubuntu
|
||||
@@ -0,0 +1,22 @@
|
||||
# Geprüft am 2026-10-12: Image (.img ist qcow2), SHA256SUMS (Zeilenformat "<hash> *<datei>")
|
||||
# und LXC-Template existieren. Guest-Agent nicht im Image – wird beim Template-Bau eingebaut.
|
||||
id: ubuntu-24.04
|
||||
name: Ubuntu 24.04 LTS „Noble Numbat“
|
||||
family: debian
|
||||
os:
|
||||
id: ubuntu
|
||||
version_id: "24.04"
|
||||
codename: noble
|
||||
arch: amd64
|
||||
vm:
|
||||
image_url: https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
|
||||
checksum_url: https://cloud-images.ubuntu.com/noble/current/SHA256SUMS
|
||||
checksum_type: sha256
|
||||
format: qcow2
|
||||
default_user: ubuntu
|
||||
guest_agent_preinstalled: false
|
||||
bios: ovmf
|
||||
min_disk_gb: 4
|
||||
lxc:
|
||||
template_pattern: "ubuntu-24.04-standard_*_amd64.tar.zst"
|
||||
ostype: ubuntu
|
||||
@@ -0,0 +1,22 @@
|
||||
# Geprüft am 2026-10-12: Image (.img ist qcow2), SHA256SUMS (Zeilenformat "<hash> *<datei>")
|
||||
# und LXC-Template existieren. Guest-Agent nicht im Image – wird beim Template-Bau eingebaut.
|
||||
id: ubuntu-26.04
|
||||
name: Ubuntu 26.04 LTS „Resolute Raccoon“
|
||||
family: debian
|
||||
os:
|
||||
id: ubuntu
|
||||
version_id: "26.04"
|
||||
codename: resolute
|
||||
arch: amd64
|
||||
vm:
|
||||
image_url: https://cloud-images.ubuntu.com/resolute/current/resolute-server-cloudimg-amd64.img
|
||||
checksum_url: https://cloud-images.ubuntu.com/resolute/current/SHA256SUMS
|
||||
checksum_type: sha256
|
||||
format: qcow2
|
||||
default_user: ubuntu
|
||||
guest_agent_preinstalled: false
|
||||
bios: ovmf
|
||||
min_disk_gb: 4
|
||||
lxc:
|
||||
template_pattern: "ubuntu-26.04-standard_*_amd64.tar.zst"
|
||||
ostype: ubuntu
|
||||
@@ -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