Proxmox
Der Verein betreibt mehrere Proxmox-Kisten.
Der Zugriff auf die Admin-Oberflaechen erfolgt bitte immer per HOSTNAME.pveadmin.freifunk-stuttgart.de. Hintergrund: damit kann man auch ueber den Reverse Proxy, die auf anderen Hosts laufen, zugreifen. Ausserdem bekommt man so ein ordentliches Zertifikat.
Jeder pve-Cluster hat ein lokales Netzwerk (Hetzner vSwitch/Crossoverkabel) das fuer die Kommunikation im Cluster verwendet wird. Getrennt davon gibt es L2-Netze fuer die Gaeste, die auf den Proxmox-Hosts laufen.
Backup
Host
Die Hosts werden per PBS gebackupt, siehe /usr/local/sbin/backup_pbs.sh
Infos zum restore per proxmox-backup-client gibt es unter pbs.
Gaeste
Per Proxmox Backup.
In clustern bitte pro Cluster-Node extra Backup-Jobs anlegen, damit Notifcation per Healthchecks pro Node erfolgt
Netz fuer Gaeste
Es gibt per VXLAN ein Clusteruebergreifendes L2, ueber das die Gaeste miteinander kommunizieren koennen. Wird per Proxmox SDN konfiguriert.
Als L3-underlay dient der Babel-Backbone.
Cluster
Clustername | Cluster-ID | Hoster/Standort | Cluster-Netz |
---|---|---|---|
ffshetzner | 3 | Hetzner | 10.5.0.0/24 |
ffsz10a | 8 | Nepustil, Zettachring 10a | 10.8.0.0/24 |
Maschinen
Proxmox Instanz | Cluster | Cluster-IP |
---|---|---|
ffs05.freifunk-stuttgart.de | ffshetzner | 10.5.0.5 |
ffs08.freifunk-stuttgart.de | ffsz10a | 10.8.0.8 |
ffs11.freifunk-stuttgart.de | ffshetzner | 10.5.0.11 |
ffs13.freifunk-stuttgart.de | ffsz10a | 10.8.0.13 |
Setup
Es gibt ein paar Konventionen zum Setup, an die wir uns halten moechten.
Interfaces
vmbr1
: NAT für Gäste, Netz ist hier `10.0.CLUSTERID.0/24`. Die Mitglieder des Cluster haben die IPs 1-10. - bald alt wird auf gastnat migriertvmbr2
: Layer 2 Freifunknetz, VLAN = Segment + 100. VLAN 255 ist Transfernetz in den Wireguard Backbone.vmbr999
: externes Interface mit öffentlicher IP. Finger weg, bei Hetzner droht Serversperrung wenn hier unbekannte MACs oder IPs unterwegs sind!gastnat
: Clusteruebergreifendes VXLAN fuer Gaeste-Kommunikation10.0.3/24
-2a0f:d607:e:1::/64
- Dualstack mit Firewall IPv4/IPv6services
: Clusteruebergreifendes VXLAN fuer services die public IPv4/IPv6 brauchen91.216.35.208/28
-2a0f:d607:e:1::/64
- keine Firewall
Dateisysteme
Bei Hetzner kein Root auf ZFS, weil das Hetzner Rescue kein ZFS kann! Dann bitte mdadm RAID + LVM + ZFS (ja, wirklich).
IP-Adressen
Bitte alle IP-Adressen fuer Container und VMs im Wiki-Artikel Zentraler Backbone aus 10.191.255.0/24
reservieren. Das stellt sicher, dass alle Gaeste spaeter auch prinzipiell an den Backbone angebunden werden koennen.
Gast-IDs
Leiten sich aus dem letzten Oktett der Backbone-IP und der Cluster-ID ab:
Gast-ID = Cluster-ID * 1000 + letztes Oktett der IP
Also hat der Gast mit IP 10.191.255.123
auf Cluster 7 die IP 7123
.
Nutzerkonto auf Proxmox anlegen
Es werden grundsaetzlich nur lokale Nutzeraccounts benutzt, damit die Nutzer die Proxmox-Shell verwenden koennen und ihr Passwort selbst per SSH setzen koennen.
Die Nutzerkonten auf Proxmox Hosts werden alle mit Ansible verwaltet.
Die Proxmox(!)-Gruppe ffs gibt den Nutzern Zugriff aufs Proxmox-Webinterface.
- Nutzer im Ansible anlegen
- Playbook
all.yml
laufen lassen. - Den Nutzer per
pveum user add NUTZER@pam
bei Proxmox bekannt machen. Das muss nur einmal pro Cluster und Nutzer gemacht werden. - Den Nutzer per
pveum user modify --groups ffs nrb@pam
zur Proxmox-Gruppe ffs hinzufuegen. Das muss nur einmal pro Cluster und Nutzer gemacht werden. - Nutzer kann sich per SSH einloggen und anschließend ein Passwort per `passwd` setzen, mit dem er sich im Proxmox einloggen kann. Das Passwort gilt jeweils nur für einen Host, nicht clusterweit.
Zugriff auf Container / Proxmox als Jumphost
Zum Zugriff auf Container/VMs per SSH kann der Jumphost verwendet werden
Anleitung gibt es im Infrastruktur-Ansible
Neuen Container anlegen
Wer ein Freifunkprojekt hat, kann vom Verein einen Container bekommen. Voraussetzung ist Vereinsmitgliedschaft und/oder eine entsprechende Vereinbarung mit dem Verein. Der Vorstand kann hierzu Auskunft geben.
Ansible-Playbooks im Infrastruktur-Ansible
- create_container_z10a_gastnet.yml
- erstellt einen LXC Container im gastnet
- Dualstack IPv4/IPv6; IPv4 NAT
- Inbound Firewall IPv4 und IPv6
- ideal geeignet bspw fuer Webanwendungen
- keine Portforwardings
- create_container_z10a_services.yml
- erstellt einen LXC Container im services Netz
- Dualstack IPv4/IPv6; kein NAT
keinerlei Firewall!
Die Playbooks reservieren autoamtisch IP-Adressen und erstellen DNS-Eintraege usw