====== 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 [[technik: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 [[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.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 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'' - ''2a0f:d607:e:1::/64'' - Dualstack mit Firewall IPv4/IPv6
* ''services'': Clusteruebergreifendes VXLAN fuer services die public IPv4/IPv6 brauchen ''91.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 [[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 =====
Zum Zugriff auf Container/VMs per SSH kann der Jumphost verwendet werden
Anleitung gibt es im [[https://gitlab.freifunk-stuttgart.de/infrastruktur/ansible|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 [[https://gitlab.freifunk-stuttgart.de/infrastruktur/ansible|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