====== 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.
===== 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 [[technik:babel-backbone|Babel-Backbone]].
===== Cluster =====
^ Clustername ^ Cluster-ID ^ Hoster/Standort ^ Cluster-Netz ^
| ffshetzner | 3 | Hetzner | ''10.5.0.0/24'' |
| ffsz10a | 8 | Nepustil, Zettachring 10a | ''10.0.8.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 migriert
* ''vmbr2'': 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-Kommunikation ''10.0.3/24'' TODO 20241010: Migration
==== 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 [[technik:ip-adressen#zentraler_backbone|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 =====
Sobald man einen Account auf den Proxmox Hosts hat und sich auf den Hosts per SSH einloggen kann, kann man sich auf den Gästen einloggen.
Entweder per Jumphost und IP des Gastes:
''ssh -J PROXMOXHOST GASTIP''
Oder man fügt folgenden Schnipsel in seine `.ssh/config` ein:
Host *.ffs05
User root
ProxyCommand ssh ffs05 -W 10.0.3.$(( $(echo %n | sed -e 's/.ffs05//') - 3000 )):22
Und kann dann per ''ssh GASTID.ffs05'' auf jeden beliebigen Gast hinter ffs05.
===== 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.
- IP-Adresse reservieren im wiki-Artikel [[technik:ip-adressen|IP-Adressen]].
- Im Proxmox auf "Create CT" klicken
- Container-ID, Hostnamen und SSH-Key eintragen
- Bei Netzwerk die IP-Adresse aus dem Wiki-Artikel eintragen. Das letzte Oktett wird in das jeweilige Netz des Clusters eingesetzt. Beispiel: hat man die IP-Adresse ''10.191.255.163'' reserviert, nutzt man im Cluster ''3'' die IP ''10.0.3.163''. Netzmaske ist immer ''/24''. Gateway ist die Cluster-IP des jeweiligen Hosts.
- Den Container oeffnen, auf "Console mode" klicken und auf "shell" aendern.
- Unter Netzwerk die MTU von ''eth0'' auf ''1400'' umstellen (nur bei Hetzner, wegen vSwitch).